@@ -8,16 +8,18 @@ import (
88)
99
1010type ProjectGenerator struct {
11- ProjectPath string
12- ProjectName string
13- ModuleName string
11+ ProjectPath string
12+ ProjectName string
13+ ModuleName string
14+ DatabaseType string
1415}
1516
16- func NewProjectGenerator (projectPath , projectName , moduleName string ) * ProjectGenerator {
17+ func NewProjectGenerator (projectPath , projectName , moduleName , databaseType string ) * ProjectGenerator {
1718 return & ProjectGenerator {
18- ProjectPath : projectPath ,
19- ProjectName : projectName ,
20- ModuleName : moduleName ,
19+ ProjectPath : projectPath ,
20+ ProjectName : projectName ,
21+ ModuleName : moduleName ,
22+ DatabaseType : databaseType ,
2123 }
2224}
2325
@@ -36,14 +38,53 @@ func (g *ProjectGenerator) Generate() error {
3638 }
3739 }
3840
41+ // Select templates based on database choice
42+ var mainTmpl , goModTmpl , dockerComposeTmpl , userModelTmpl , userRepoTmpl string
43+
44+ switch g .DatabaseType {
45+ case "mongodb" :
46+ mainTmpl = mainMongoTemplate
47+ goModTmpl = goModMongoTemplate
48+ dockerComposeTmpl = dockerComposeMongoTemplate
49+ userModelTmpl = userModelMongoTemplate
50+ userRepoTmpl = userRepositoryMongoTemplate
51+ case "postgres" :
52+ mainTmpl = mainPostgresTemplate
53+ goModTmpl = goModPostgresTemplate
54+ dockerComposeTmpl = dockerComposePostgresTemplate
55+ userModelTmpl = userModelPostgresTemplate
56+ userRepoTmpl = userRepositoryPostgresTemplate
57+ case "mysql" :
58+ mainTmpl = mainMysqlTemplate
59+ goModTmpl = goModMysqlTemplate
60+ dockerComposeTmpl = dockerComposeMysqlTemplate
61+ userModelTmpl = userModelMysqlTemplate
62+ userRepoTmpl = userRepositoryMysqlTemplate
63+ case "dynamodb" :
64+ mainTmpl = mainDynamodbTemplate
65+ goModTmpl = goModDynamodbTemplate
66+ dockerComposeTmpl = dockerComposeDynamodbTemplate
67+ userModelTmpl = userModelDynamodbTemplate
68+ userRepoTmpl = userRepositoryDynamodbTemplate
69+ default : // "none"
70+ mainTmpl = mainNoneTemplate
71+ goModTmpl = goModNoneTemplate
72+ dockerComposeTmpl = dockerComposeNoneTemplate
73+ userModelTmpl = userModelNoneTemplate
74+ userRepoTmpl = userRepositoryNoneTemplate
75+ }
76+
3977 // Generate files
4078 files := map [string ]string {
41- "main.go" : mainTemplate ,
42- "go.mod" : goModTemplate ,
43- "Makefile" : makefileTemplate ,
44- "template.yaml" : templateYamlTemplate ,
45- "Dockerfile" : dockerfileTemplate ,
46- "docker-compose.yml" : dockerComposeTemplate ,
79+ "main.go" : mainTmpl ,
80+ "go.mod" : goModTmpl ,
81+ "Makefile" : makefileTemplate ,
82+ "template.yaml" : templateYamlTemplate ,
83+ "Dockerfile" : dockerfileTemplate ,
84+ }
85+
86+ if dockerComposeTmpl != "" {
87+ files ["docker-compose.yml" ] = dockerComposeTmpl
4788 }
4889
4990 for filename , tmpl := range files {
@@ -55,8 +96,8 @@ func (g *ProjectGenerator) Generate() error {
5596 // Generate internal package files
5697 internalFiles := map [string ]string {
5798 "internal/controller/user_controller.go" : userControllerTemplate ,
58- "internal/model/user.go" : userModelTemplate ,
59- "internal/repository/user_repository.go" : userRepositoryTemplate ,
99+ "internal/model/user.go" : userModelTmpl ,
100+ "internal/repository/user_repository.go" : userRepoTmpl ,
60101 "internal/service/user_service.go" : userServiceTemplate ,
61102 }
62103
0 commit comments