Skip to content

Commit 5e46af6

Browse files
fix: grpc variable names issue
1 parent 21c877e commit 5e46af6

File tree

14 files changed

+369
-33
lines changed

14 files changed

+369
-33
lines changed

core/go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.20
44

55
require (
66
github.com/gertd/go-pluralize v0.2.1
7+
github.com/iancoleman/strcase v0.2.0
78
github.com/sirupsen/logrus v1.9.0
89
golang.org/x/exp v0.0.0-20230321023759-10a507213a29
910
golang.org/x/text v0.9.0

core/go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw
88
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
99
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
1010
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
11+
github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0=
12+
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
1113
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1214
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1315
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=

core/internal/languages/golang/frameworks/go-gin-server/copier.go

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package goginserver
33
import (
44
"errors"
55
"github.com/gertd/go-pluralize"
6+
"github.com/iancoleman/strcase"
67
"github.com/intelops/compage/core/internal/core/node"
78
"github.com/intelops/compage/core/internal/languages"
89
"github.com/intelops/compage/core/internal/languages/executor"
@@ -56,10 +57,12 @@ type Copier struct {
5657
}
5758

5859
type resourceData struct {
59-
SmallResourceNameSingular string
60-
SmallResourceNamePlural string
61-
CapsResourceNameSingular string
62-
CapsResourceNamePlural string
60+
SmallKebabCaseResourceNameSingular string
61+
SmallSnakeCaseResourceNameSingular string
62+
SmallResourceNameSingular string
63+
SmallResourceNamePlural string
64+
CapsResourceNameSingular string
65+
CapsResourceNamePlural string
6366
}
6467

6568
func NewCopier(userName, repositoryName, nodeName, nodeDirectoryName, templatesRootPath string, isRestServer bool, restServerPort string, isSQLDB bool, sqlDB string, resources []node.Resource, restClients []languages.RestClient) *Copier {
@@ -78,11 +81,14 @@ func NewCopier(userName, repositoryName, nodeName, nodeDirectoryName, templatesR
7881
if isRestServer {
7982
var resourcesData []resourceData
8083
for _, r := range resources {
84+
lowerCamelResourceName := strcase.ToLowerCamel(r.Name)
8185
resourcesData = append(resourcesData, resourceData{
82-
SmallResourceNameSingular: strings.ToLower(r.Name),
83-
SmallResourceNamePlural: pluralizeClient.Plural(strings.ToLower(r.Name)),
84-
CapsResourceNameSingular: r.Name,
85-
CapsResourceNamePlural: pluralizeClient.Plural(r.Name),
86+
SmallKebabCaseResourceNameSingular: strcase.ToKebab(r.Name),
87+
SmallSnakeCaseResourceNameSingular: strcase.ToSnake(r.Name),
88+
SmallResourceNameSingular: lowerCamelResourceName,
89+
SmallResourceNamePlural: pluralizeClient.Plural(lowerCamelResourceName),
90+
CapsResourceNameSingular: r.Name,
91+
CapsResourceNamePlural: pluralizeClient.Plural(r.Name),
8692
})
8793
}
8894
data["RestResources"] = resourcesData
@@ -135,14 +141,15 @@ func (c Copier) createRestServerDirectories() error {
135141
if err := utils.CreateDirectories(daosDirectory); err != nil {
136142
return err
137143
}
144+
// create directories for every resource's db client.
138145
if c.IsSQLDB {
139146
sqlDBClientsDirectory := c.NodeDirectoryName + SQLDBClientsPath
140147
if err := utils.CreateDirectories(sqlDBClientsDirectory); err != nil {
141148
return err
142149
}
143150
resources := c.Data["RestResources"].([]resourceData)
144151
for _, r := range resources {
145-
resourceClientDirectory := c.NodeDirectoryName + SQLDBClientsPath + "/" + r.SmallResourceNameSingular + "_client"
152+
resourceClientDirectory := c.NodeDirectoryName + SQLDBClientsPath + "/" + r.SmallKebabCaseResourceNameSingular + "-client"
146153
if err := utils.CreateDirectories(resourceClientDirectory); err != nil {
147154
return err
148155
}
@@ -154,7 +161,7 @@ func (c Copier) createRestServerDirectories() error {
154161
// copyRestServerResourceFiles copies rest server resource files from template and renames them as per resource config.
155162
func (c Copier) copyRestServerResourceFiles(resource node.Resource) error {
156163
var filePaths []string
157-
resourceName := strings.ToLower(resource.Name)
164+
resourceName := strcase.ToKebab(resource.Name)
158165

159166
// copy controller files to generated project
160167
targetResourceControllerFileName := c.NodeDirectoryName + ControllersPath + "/" + resourceName + "-" + ControllerFile
@@ -187,7 +194,7 @@ func (c Copier) copyRestServerResourceFiles(resource node.Resource) error {
187194
if c.IsSQLDB {
188195
if c.SQLDB == Sqlite {
189196
// client files
190-
targetResourceSQLDBClientFileName = c.NodeDirectoryName + SQLDBClientsPath + "/" + resourceName + "_client" + "/" + SqliteDBClientFile
197+
targetResourceSQLDBClientFileName = c.NodeDirectoryName + SQLDBClientsPath + "/" + resourceName + "-client" + "/" + SqliteDBClientFile
191198
_, err2 := utils.CopyFile(targetResourceSQLDBClientFileName, c.TemplatesRootPath+SQLDBClientsPath+"/"+SqliteDBClientFile)
192199
if err2 != nil {
193200
return err2
@@ -202,7 +209,7 @@ func (c Copier) copyRestServerResourceFiles(resource node.Resource) error {
202209
filePaths = append(filePaths, targetResourceDaoFileName)
203210
} else if c.SQLDB == MySQL {
204211
// client files
205-
targetResourceSQLDBClientFileName = c.NodeDirectoryName + SQLDBClientsPath + "/" + resourceName + "_client" + "/" + MySQLDBClientFile
212+
targetResourceSQLDBClientFileName = c.NodeDirectoryName + SQLDBClientsPath + "/" + resourceName + "-client" + "/" + MySQLDBClientFile
206213
_, err2 := utils.CopyFile(targetResourceSQLDBClientFileName, c.TemplatesRootPath+SQLDBClientsPath+"/"+MySQLDBClientFile)
207214
if err2 != nil {
208215
return err2
@@ -325,9 +332,12 @@ func (c Copier) addResourceSpecificTemplateData(resource node.Resource) error {
325332
c.Data["GetQueryExecColumns"] = getQueryScanColumns
326333
}
327334

328-
// Add another map
329-
c.Data["SmallResourceNameSingular"] = strings.ToLower(resource.Name)
330-
c.Data["SmallResourceNamePlural"] = c.PluralizeClient.Plural(strings.ToLower(resource.Name))
335+
lowerCamelResourceName := strcase.ToLowerCamel(resource.Name)
336+
// Add another map with below keys at root level (this is for specific resource for this iteration)
337+
c.Data["SmallKebabCaseResourceNameSingular"] = strcase.ToKebab(resource.Name)
338+
c.Data["SmallSnakeCaseResourceNameSingular"] = strcase.ToSnake(resource.Name)
339+
c.Data["SmallResourceNameSingular"] = lowerCamelResourceName
340+
c.Data["SmallResourceNamePlural"] = c.PluralizeClient.Plural(lowerCamelResourceName)
331341
c.Data["CapsResourceNameSingular"] = resource.Name
332342
c.Data["CapsResourceNamePlural"] = c.PluralizeClient.Plural(resource.Name)
333343
return nil

core/internal/languages/golang/frameworks/go-grpc-server/copier.go

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package gogrpcserver
33
import (
44
"errors"
55
"github.com/gertd/go-pluralize"
6+
"github.com/iancoleman/strcase"
67
"github.com/intelops/compage/core/internal/core/node"
78
"github.com/intelops/compage/core/internal/languages"
89
"github.com/intelops/compage/core/internal/languages/executor"
@@ -61,10 +62,12 @@ type Copier struct {
6162
}
6263

6364
type resourceData struct {
64-
SmallResourceNameSingular string
65-
SmallResourceNamePlural string
66-
CapsResourceNameSingular string
67-
CapsResourceNamePlural string
65+
SmallKebabCaseResourceNameSingular string
66+
SmallSnakeCaseResourceNameSingular string
67+
SmallResourceNameSingular string
68+
SmallResourceNamePlural string
69+
CapsResourceNameSingular string
70+
CapsResourceNamePlural string
6871
}
6972

7073
func NewCopier(userName, repositoryName, nodeName, nodeDirectoryName, templatesRootPath string, isGrpcServer bool, grpcServerPort string, isSQLDB bool, sqlDB string, resources []node.Resource, grpcClients []languages.GrpcClient) *Copier {
@@ -83,11 +86,14 @@ func NewCopier(userName, repositoryName, nodeName, nodeDirectoryName, templatesR
8386
if isGrpcServer {
8487
var resourcesData []resourceData
8588
for _, r := range resources {
89+
lowerCamelResourceName := strcase.ToLowerCamel(r.Name)
8690
resourcesData = append(resourcesData, resourceData{
87-
SmallResourceNameSingular: strings.ToLower(r.Name),
88-
SmallResourceNamePlural: pluralizeClient.Plural(strings.ToLower(r.Name)),
89-
CapsResourceNameSingular: r.Name,
90-
CapsResourceNamePlural: pluralizeClient.Plural(r.Name),
91+
SmallKebabCaseResourceNameSingular: strcase.ToKebab(r.Name),
92+
SmallSnakeCaseResourceNameSingular: strcase.ToSnake(r.Name),
93+
SmallResourceNameSingular: lowerCamelResourceName,
94+
SmallResourceNamePlural: pluralizeClient.Plural(lowerCamelResourceName),
95+
CapsResourceNameSingular: r.Name,
96+
CapsResourceNamePlural: pluralizeClient.Plural(r.Name),
9197
})
9298
}
9399
data["GrpcResources"] = resourcesData
@@ -144,14 +150,15 @@ func (c Copier) createGrpcServerDirectories() error {
144150
if err := utils.CreateDirectories(daosDirectory); err != nil {
145151
return err
146152
}
153+
// create directories for every resource's db client.
147154
if c.IsSQLDB {
148155
sqlDBClientsDirectory := c.NodeDirectoryName + SQLDBClientsPath
149156
if err := utils.CreateDirectories(sqlDBClientsDirectory); err != nil {
150157
return err
151158
}
152159
resources := c.Data["GrpcResources"].([]resourceData)
153160
for _, r := range resources {
154-
resourceClientDirectory := c.NodeDirectoryName + SQLDBClientsPath + "/" + r.SmallResourceNameSingular + "_client"
161+
resourceClientDirectory := c.NodeDirectoryName + SQLDBClientsPath + "/" + r.SmallKebabCaseResourceNameSingular + "-client"
155162
if err := utils.CreateDirectories(resourceClientDirectory); err != nil {
156163
return err
157164
}
@@ -163,7 +170,7 @@ func (c Copier) createGrpcServerDirectories() error {
163170
// copyGrpcServerResourceFiles copies grpc server resource files from template and renames them as per resource config.
164171
func (c Copier) copyGrpcServerResourceFiles(resource node.Resource) error {
165172
var filePaths []string
166-
resourceName := strings.ToLower(resource.Name)
173+
resourceName := strcase.ToKebab(resource.Name)
167174

168175
// copy controller files to generated project
169176
targetResourceControllerFileName := c.NodeDirectoryName + ControllersPath + "/" + resourceName + "-" + ControllerFile
@@ -196,7 +203,7 @@ func (c Copier) copyGrpcServerResourceFiles(resource node.Resource) error {
196203
if c.IsSQLDB {
197204
if c.SQLDB == Sqlite {
198205
// client files
199-
targetResourceSQLDBClientFileName = c.NodeDirectoryName + SQLDBClientsPath + "/" + resourceName + "_client" + "/" + SqliteDBClientFile
206+
targetResourceSQLDBClientFileName = c.NodeDirectoryName + SQLDBClientsPath + "/" + resourceName + "-client" + "/" + SqliteDBClientFile
200207
_, err2 := utils.CopyFile(targetResourceSQLDBClientFileName, c.TemplatesRootPath+SQLDBClientsPath+"/"+SqliteDBClientFile)
201208
if err2 != nil {
202209
return err2
@@ -211,7 +218,7 @@ func (c Copier) copyGrpcServerResourceFiles(resource node.Resource) error {
211218
filePaths = append(filePaths, targetResourceDaoFileName)
212219
} else if c.SQLDB == MySQL {
213220
// client files
214-
targetResourceSQLDBClientFileName = c.NodeDirectoryName + SQLDBClientsPath + "/" + resourceName + "_client" + "/" + MySQLDBClientFile
221+
targetResourceSQLDBClientFileName = c.NodeDirectoryName + SQLDBClientsPath + "/" + resourceName + "-client" + "/" + MySQLDBClientFile
215222
_, err2 := utils.CopyFile(targetResourceSQLDBClientFileName, c.TemplatesRootPath+SQLDBClientsPath+"/"+MySQLDBClientFile)
216223
if err2 != nil {
217224
return err2
@@ -353,9 +360,12 @@ func (c Copier) addResourceSpecificTemplateData(resource node.Resource) error {
353360
c.Data["GetQueryExecColumns"] = getQueryScanColumns
354361
}
355362

356-
// Add another map
357-
c.Data["SmallResourceNameSingular"] = strings.ToLower(resource.Name)
358-
c.Data["SmallResourceNamePlural"] = c.PluralizeClient.Plural(strings.ToLower(resource.Name))
363+
lowerCamelResourceName := strcase.ToLowerCamel(resource.Name)
364+
// Add another map with below keys at root level (this is for specific resource for this iteration)
365+
c.Data["SmallKebabCaseResourceNameSingular"] = strcase.ToKebab(resource.Name)
366+
c.Data["SmallSnakeCaseResourceNameSingular"] = strcase.ToSnake(resource.Name)
367+
c.Data["SmallResourceNameSingular"] = lowerCamelResourceName
368+
c.Data["SmallResourceNamePlural"] = c.PluralizeClient.Plural(lowerCamelResourceName)
359369
c.Data["CapsResourceNameSingular"] = resource.Name
360370
c.Data["CapsResourceNamePlural"] = c.PluralizeClient.Plural(resource.Name)
361371
return nil
@@ -376,7 +386,7 @@ func (c Copier) CreateGrpcConfigs() error {
376386
func (c Copier) CreateGrpcServer() error {
377387
// if the node is server, add server code
378388
if c.IsGrpcServer {
379-
// create directories for controller, service, dao, models
389+
// create directories for controller, service, dao[for every resource's db clients], models
380390
if err := c.createGrpcServerDirectories(); err != nil {
381391
return err
382392
}
@@ -409,6 +419,8 @@ func (c Copier) CreateGrpcServer() error {
409419
}
410420
filePaths = append(filePaths, targetMySQLConfigFileName)
411421
return executor.Execute(filePaths, c.Data)
422+
} else {
423+
return errors.New("database not supported")
412424
}
413425
}
414426
}

core/test/generator_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func TestGrpcGenerator(t *testing.T) {
147147
"RollNumber": "int32",
148148
"College": "string"
149149
},
150-
"name": "Student"
150+
"name": "StudentModel"
151151
}
152152
]
153153
}

core/vendor/github.com/iancoleman/strcase/.travis.yml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/vendor/github.com/iancoleman/strcase/LICENSE

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/vendor/github.com/iancoleman/strcase/README.md

Lines changed: 59 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/vendor/github.com/iancoleman/strcase/acronyms.go

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)