77 "fmt"
88 "go/format"
99 "log"
10- "os"
1110 "path"
1211 "strings"
1312 "text/template"
@@ -36,7 +35,11 @@ const (
3635 updateMapOut = "update-map.txt"
3736 filterOut = "filter.txt"
3837 serverAPIOut = "server"
39- modelDir = "model"
38+
39+ modelDir = "model"
40+ apiDir = "api"
41+ pbDir = "pb"
42+ gistDir = "gist"
4043
4144 writeFilePerm = 0o666
4245 unsignedPrefix = "u"
@@ -124,34 +127,28 @@ func GenerateProject(pc ProjectConfig) error {
124127 if err := pc .Check (); err != nil {
125128 return errors .WithMessage (err , "Check err" )
126129 }
127-
128- var cab , crb , umb , fb strings.Builder
129- if err := mkdirIfNotExist (path .Join (pc .Dir , modelDir )); err != nil {
130- return errors .WithMessage (err , "mkdirIfNotExist err" )
131- }
132130 defer util .CloseDB ()
133131
132+ var cab , crb , umb , fb strings.Builder
134133 apiImports := make ([]string , 0 , len (pc .Tables ))
135134 for _ , table := range pc .Tables {
136135 if table == "" {
137136 continue
138137 }
139138
140- var apiName , modelName string
139+ var baseName , apiName , modelName string
141140 c := pc .Config
142141 c .Table = table
143142 if pc .EnableTrimTablePrefix {
144143 c .StructName = strcase .ToCamel (strings .TrimPrefix (table , pc .TablePrefix ))
145- baseName := strings .ToLower (c .StructName )
146- apiName = baseName + apiFileSuffix
147- modelName = baseName + goFileSuffix
144+ baseName = strings .ToLower (c .StructName )
148145 } else {
149146 c .StructName = strcase .ToCamel (table )
150147 c .RouteName = strcase .ToDelimited (strings .TrimPrefix (table , pc .TablePrefix ), c .GetDelimiter ())
151- baseName := strings .ToLower (strcase .ToCamel (c .RouteName ))
152- apiName = baseName + apiFileSuffix
153- modelName = baseName + goFileSuffix
148+ baseName = strings .ToLower (strcase .ToCamel (c .RouteName ))
154149 }
150+ apiName = baseName + apiFileSuffix
151+ modelName = baseName + goFileSuffix
155152
156153 cc := c .GetCmdConfig ()
157154 fields , err := util .GetFields (cc )
@@ -169,8 +166,8 @@ func GenerateProject(pc ProjectConfig) error {
169166 if err != nil {
170167 return errors .WithMessage (err , "util.GenerateCode err" )
171168 }
172- if err := os . WriteFile (path .Join (pc .Dir , modelDir , modelName ), [] byte ( model ), writeFilePerm ); err != nil {
173- return errors .WithMessage (err , "os.WriteFile err" )
169+ if err := writeFile (path .Join (pc .Dir , modelDir , modelName ), model ); err != nil {
170+ return errors .WithMessage (err , "writeFile err" )
174171 }
175172 }
176173
@@ -179,8 +176,8 @@ func GenerateProject(pc ProjectConfig) error {
179176 if err != nil {
180177 return errors .WithMessage (err , "GenerateAPI err" )
181178 }
182- if err := os . WriteFile (path .Join (pc .Dir , apiName ), [] byte ( api ), writeFilePerm ); err != nil {
183- return errors .WithMessage (err , "os.WriteFile err" )
179+ if err := writeFile (path .Join (pc .Dir , apiDir , apiName ), api ); err != nil {
180+ return errors .WithMessage (err , "writeFile err" )
184181 }
185182 apiImports = append (apiImports , apiName )
186183
@@ -215,37 +212,38 @@ func GenerateProject(pc ProjectConfig) error {
215212 if fileName == "" {
216213 fileName = serverAPIOut
217214 }
218- fileName = path .Join (pc .Dir , fileName + apiFileSuffix )
215+ dirName := path .Join (pc .Dir , pbDir )
216+ fileName = path .Join (pc .Dir , apiDir , fileName + apiFileSuffix )
219217
220218 out , err := GenerateServerAPI (c , apiImports , fileName )
221219 if err != nil {
222220 return errors .WithMessage (err , "GenerateServerAPI err" )
223221 }
224- if err := os . WriteFile (fileName , [] byte ( out ), writeFilePerm ); err != nil {
225- return errors .WithMessage (err , "os.WriteFile err" )
222+ if err := writeFile (fileName , out ); err != nil {
223+ return errors .WithMessage (err , "writeFile err" )
226224 }
227- if err := protogen .DoGenProto (fileName , pc . Dir ); err != nil {
225+ if err := protogen .DoGenProto (fileName , dirName ); err != nil {
228226 return errors .WithMessage (err , "protogen.DoGenProto err" )
229227 }
230228 }
231229 if ca := cab .String (); ca != "" {
232- if err := os . WriteFile (path .Join (pc .Dir , convertAPIOut ), [] byte ( ca [:len (ca )- 1 ]), writeFilePerm ); err != nil {
233- return errors .WithMessage (err , "os.WriteFile err" )
230+ if err := writeFile (path .Join (pc .Dir , gistDir , convertAPIOut ), ca [:len (ca )- 1 ]); err != nil {
231+ return errors .WithMessage (err , "writeFile err" )
234232 }
235233 }
236234 if cr := crb .String (); cr != "" {
237- if err := os . WriteFile (path .Join (pc .Dir , convertRPCOut ), [] byte ( cr [:len (cr )- 1 ]), writeFilePerm ); err != nil {
238- return errors .WithMessage (err , "os.WriteFile err" )
235+ if err := writeFile (path .Join (pc .Dir , gistDir , convertRPCOut ), cr [:len (cr )- 1 ]); err != nil {
236+ return errors .WithMessage (err , "writeFile err" )
239237 }
240238 }
241239 if um := umb .String (); um != "" {
242- if err := os . WriteFile (path .Join (pc .Dir , updateMapOut ), [] byte ( um [:len (um )- 1 ]), writeFilePerm ); err != nil {
243- return errors .WithMessage (err , "os.WriteFile err" )
240+ if err := writeFile (path .Join (pc .Dir , gistDir , updateMapOut ), um [:len (um )- 1 ]); err != nil {
241+ return errors .WithMessage (err , "writeFile err" )
244242 }
245243 }
246244 if f := fb .String (); f != "" {
247- if err := os . WriteFile (path .Join (pc .Dir , filterOut ), [] byte ( f [:len (f )- 1 ]), writeFilePerm ); err != nil {
248- return errors .WithMessage (err , "os.WriteFile err" )
245+ if err := writeFile (path .Join (pc .Dir , gistDir , filterOut ), f [:len (f )- 1 ]); err != nil {
246+ return errors .WithMessage (err , "writeFile err" )
249247 }
250248 }
251249
0 commit comments