Skip to content

Commit 1d398d0

Browse files
committed
support database sqlite
1 parent a56a202 commit 1d398d0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+590
-259
lines changed

.github/RELEASE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
## Change log
22

33
- Added generate database initialization code command.
4-
- Added support for postgresql, tidb generation code.
4+
- Added support for postgresql, tidb, sqlite generation code.
55
- Modify the Sponge UI interface.
66
- Adjust database configuration in configuration.
77
- Added generate k8s configmap script command.
88
- The generated code version matches the local sponge version.
9+
- Fixed redundant createdAt and updatedAt fields in service and handler.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ image-build-rpc-test:
169169

170170

171171
.PHONY: patch
172-
# patch some dependent code, such as types.proto, mysql initialization code. e.g. make patch TYPE=types-pb , make patch TYPE=init-mysql, make patch TYPE=init-postgresql
172+
# patch some dependent code, such as types.proto, mysql initialization code. e.g. make patch TYPE=types-pb , make patch TYPE=init-your_db_driver, replace "your_db_driver" with mysql, postgresql, tidb, sqlite
173173
patch:
174174
@bash scripts/patch.sh $(TYPE)
175175

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
</div>
1717

18-
**Sponge** is a basic development framework that integrates `code auto generation`, `gin and grpc`, sponge has a wealth of generating code commands, generating different functional code can be combined into a complete service (similar to the way that artificially broken sponge cells can automatically recombine into a new sponge). The code is decoupled and modularly designed, it is easy to build a complete project from development to deployment, so that you develop web or microservices project easily, Go can also be "low-code development".
18+
**Sponge** is a basic development framework that integrates `code auto generation`, `Gin and GRPC`, sponge has a rich set of code generation commands, generating different functional code can be combined into a complete service (similar to the way that artificially broken sponge cells can automatically recombine into a new sponge). The code is decoupled and modularly designed, it is easy to build a complete project from development to deployment, just fill in the business logic code on the generated template code, greatly improved development efficiency and reduced development difficulty, the use of Go can also be "low-code development".
1919

2020
<br>
2121

assets/readme-cn.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22

33

4-
[sponge](https://github.com/zhufuyi/sponge) 是一个集成了 `自动生成代码``gin和grpc` 的基础开发框架。sponge拥有丰富的生成代码命令,生成不同的功能代码可以组合成完整的服务(类似人为打散的海绵细胞可以自动重组成一个新的海绵)。代码解耦模块化设计,很容易构建出从开发到部署的完整工程项目,让你开发web或微服务项目轻而易举、事半功倍,使用go也可以"低代码开发"。
4+
[sponge](https://github.com/zhufuyi/sponge) 是一个集成了 `自动生成代码``Gin和GRPC` 的基础开发框架。sponge拥有丰富的生成代码命令,生成不同的功能代码可以组合成完整的服务(类似人为打散的海绵细胞可以自动重组成一个新的海绵)。代码解耦模块化设计,很容易构建出从开发到部署的完整工程项目,只需在生成的模板代码上填充具体业务逻辑代码,极大的提高了开发效率和降低了开发难度,使用go也可以"低代码开发"。
55

66
<br>
77

cmd/sponge/commands/generate/common.go

Lines changed: 46 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ const (
2727
DBDriverPostgresql = "postgresql"
2828
// DBDriverTidb tidb driver
2929
DBDriverTidb = "tidb"
30+
// DBDriverSqlite sqlite driver
31+
DBDriverSqlite = "sqlite"
3032
)
3133

3234
var (
@@ -88,8 +90,8 @@ var (
8890
appConfigFileMark = "# todo generate http or rpc server configuration here"
8991
appConfigFileMark2 = "# todo generate the database configuration here"
9092

91-
deploymentConfigFile = "kubernetes/serverNameExample-configmap.yml"
92-
deploymentConfigFileMark = "# todo generate the database configuration for deployment here"
93+
//deploymentConfigFile = "kubernetes/serverNameExample-configmap.yml"
94+
//deploymentConfigFileMark = "# todo generate the database configuration for deployment here"
9395

9496
spongeTemplateVersionMark = "// todo generate the local sponge template code version here"
9597

@@ -372,27 +374,42 @@ func replacePackage(data []byte, moduleName string, serverName string) []byte {
372374
return data
373375
}
374376

375-
func getDBConfigCode(dbDriver string, forDeployment ...bool) string {
376-
isDeployment := false
377-
if len(forDeployment) > 0 {
378-
isDeployment = forDeployment[0]
379-
}
380-
377+
//func getDBConfigCode(dbDriver string, forDeployment ...bool) string {
378+
// isDeployment := false
379+
// if len(forDeployment) > 0 {
380+
// isDeployment = forDeployment[0]
381+
// }
382+
//
383+
// dbConfigCode := ""
384+
// switch strings.ToLower(dbDriver) {
385+
// case DBDriverMysql, DBDriverTidb:
386+
// if isDeployment {
387+
// dbConfigCode = mysqlConfigForDeploymentCode
388+
// } else {
389+
// dbConfigCode = mysqlConfigCode
390+
// }
391+
//
392+
// case DBDriverPostgresql:
393+
// if isDeployment {
394+
// dbConfigCode = postgresqlConfigForDeploymentCode
395+
// } else {
396+
// dbConfigCode = postgresqlConfigCode
397+
// }
398+
// default:
399+
// panic("getDBConfigCode error, unsupported database driver: " + dbDriver)
400+
// }
401+
// return dbConfigCode
402+
//}
403+
404+
func getDBConfigCode(dbDriver string) string {
381405
dbConfigCode := ""
382406
switch strings.ToLower(dbDriver) {
383407
case DBDriverMysql, DBDriverTidb:
384-
if isDeployment {
385-
dbConfigCode = mysqlConfigForDeploymentCode
386-
} else {
387-
dbConfigCode = mysqlConfigCode
388-
}
389-
408+
dbConfigCode = mysqlConfigCode
390409
case DBDriverPostgresql:
391-
if isDeployment {
392-
dbConfigCode = postgresqlConfigForDeploymentCode
393-
} else {
394-
dbConfigCode = postgresqlConfigCode
395-
}
410+
dbConfigCode = postgresqlConfigCode
411+
case DBDriverSqlite:
412+
dbConfigCode = sqliteConfigCode
396413
default:
397414
panic("getDBConfigCode error, unsupported database driver: " + dbDriver)
398415
}
@@ -406,6 +423,8 @@ func getInitDBCode(dbDriver string) string {
406423
initDBCode = modelInitDBFileMysqlCode
407424
case DBDriverPostgresql:
408425
initDBCode = modelInitDBFilePostgresqlCode
426+
case DBDriverSqlite:
427+
initDBCode = modelInitDBFileSqliteCode
409428
default:
410429
panic("getInitDBCode error, unsupported database driver: " + dbDriver)
411430
}
@@ -482,3 +501,11 @@ func generateConfigmap(serverName string, outPath string) error {
482501
data := strings.ReplaceAll(string(configmapFileData), configmapFileMark, configFileData)
483502
return os.WriteFile(configmapFile, []byte(data), 0666)
484503
}
504+
505+
func sqliteDSNAdaptation(dbDriver string, dsn string) string {
506+
if dbDriver == DBDriverSqlite && gofile.IsWindows() {
507+
dsn = strings.Replace(dsn, "\\", "\\\\", -1)
508+
dsn = strings.Replace(dsn, "/", "\\\\", -1)
509+
}
510+
return dsn
511+
}

cmd/sponge/commands/generate/dao.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@ func DaoCommand(parentName string) *cobra.Command {
3434
3535
Examples:
3636
# generate dao code and embed gorm.model struct.
37-
sponge %s dao --module-name=yourModuleName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user
37+
sponge %s dao --module-name=yourModuleName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user
3838
3939
# generate dao code with multiple table names.
40-
sponge %s dao --module-name=yourModuleName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=t1,t2
40+
sponge %s dao --module-name=yourModuleName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=t1,t2
4141
4242
# generate dao code, structure fields correspond to the column names of the table.
43-
sponge %s dao --module-name=yourModuleName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --embed=false
43+
sponge %s dao --module-name=yourModuleName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --embed=false
4444
4545
# generate dao code and specify the server directory, Note: code generation will be canceled when the latest generated file already exists.
46-
sponge %s dao --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --out=./yourServerDir
46+
sponge %s dao --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --out=./yourServerDir
4747
`, parentName, parentName, parentName, parentName),
4848
SilenceErrors: true,
4949
SilenceUsage: true,
@@ -96,10 +96,10 @@ using help:
9696
},
9797
}
9898

99-
cmd.Flags().StringVarP(&sqlArgs.DBDriver, "db-driver", "k", "mysql", "database driver, support mysql, postgresql")
10099
cmd.Flags().StringVarP(&moduleName, "module-name", "m", "", "module-name is the name of the module in the go.mod file")
101100
//_ = cmd.MarkFlagRequired("module-name")
102-
cmd.Flags().StringVarP(&sqlArgs.DBDsn, "db-dsn", "d", "", "database content address, e.g. user:password@(host:port)/database")
101+
cmd.Flags().StringVarP(&sqlArgs.DBDriver, "db-driver", "k", "mysql", "database driver, support mysql, postgresql, tidb, sqlite")
102+
cmd.Flags().StringVarP(&sqlArgs.DBDsn, "db-dsn", "d", "", "database content address, e.g. user:password@(host:port)/database. Note: if db-driver=sqlite, db-dsn must be a local sqlite db file, e.g. --db-dsn=/tmp/sponge_sqlite.db") //nolint
103103
_ = cmd.MarkFlagRequired("db-dsn")
104104
cmd.Flags().StringVarP(&dbTables, "db-table", "t", "", "table name, multiple names separated by commas")
105105
_ = cmd.MarkFlagRequired("db-table")
@@ -187,10 +187,6 @@ func (g *daoGenerator) addFields(r replacer.Replacer) []replacer.Field {
187187
New: g.codes[parser.TableName],
188188
IsCaseSensitive: true,
189189
},
190-
{
191-
Old: "github.com/zhufuyi/sponge/pkg/ggorm",
192-
New: "user/pkg/ggorm",
193-
},
194190
}...)
195191

196192
return fields

cmd/sponge/commands/generate/handler-pb.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@ func HandlerPbCommand() *cobra.Command {
3737
3838
Examples:
3939
# generate handler and protobuf code and embed gorm.model struct.
40-
sponge web handler-pb --module-name=yourModuleName --server-name=yourServerName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user
40+
sponge web handler-pb --module-name=yourModuleName --server-name=yourServerName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user
4141
4242
# generate handler and protobuf code with multiple table names.
43-
sponge web handler-pb --module-name=yourModuleName --server-name=yourServerName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=t1,t2
43+
sponge web handler-pb --module-name=yourModuleName --server-name=yourServerName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=t1,t2
4444
4545
# generate handler and protobuf code, structure fields correspond to the column names of the table.
46-
sponge web handler-pb --module-name=yourModuleName --server-name=yourServerName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --embed=false
46+
sponge web handler-pb --module-name=yourModuleName --server-name=yourServerName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --embed=false
4747
4848
# generate handler and protobuf code and specify the server directory, Note: code generation will be canceled when the latest generated file already exists.
49-
sponge web handler-pb --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --out=./yourServerDir
49+
sponge web handler-pb --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --out=./yourServerDir
5050
`,
5151
SilenceErrors: true,
5252
SilenceUsage: true,
@@ -103,12 +103,12 @@ using help:
103103
},
104104
}
105105

106-
cmd.Flags().StringVarP(&sqlArgs.DBDriver, "db-driver", "k", "mysql", "database driver, support mysql, postgresql")
107106
cmd.Flags().StringVarP(&moduleName, "module-name", "m", "", "module-name is the name of the module in the go.mod file")
108107
//_ = cmd.MarkFlagRequired("module-name")
109108
cmd.Flags().StringVarP(&serverName, "server-name", "s", "", "server name")
110109
//_ = cmd.MarkFlagRequired("server-name")
111-
cmd.Flags().StringVarP(&sqlArgs.DBDsn, "db-dsn", "d", "", "database content address, e.g. user:password@(host:port)/database")
110+
cmd.Flags().StringVarP(&sqlArgs.DBDriver, "db-driver", "k", "mysql", "database driver, support mysql, postgresql, tidb, sqlite")
111+
cmd.Flags().StringVarP(&sqlArgs.DBDsn, "db-dsn", "d", "", "database content address, e.g. user:password@(host:port)/database. Note: if db-driver=sqlite, db-dsn must be a local sqlite db file, e.g. --db-dsn=/tmp/sponge_sqlite.db") //nolint
112112
_ = cmd.MarkFlagRequired("db-dsn")
113113
cmd.Flags().StringVarP(&dbTables, "db-table", "t", "", "table name, multiple names separated by commas")
114114
_ = cmd.MarkFlagRequired("db-table")
@@ -237,10 +237,6 @@ func (g *handlerPbGenerator) addFields(r replacer.Replacer) []replacer.Field {
237237
New: g.codes[parser.TableName],
238238
IsCaseSensitive: true,
239239
},
240-
{
241-
Old: "github.com/zhufuyi/sponge/pkg/ggorm",
242-
New: "user/pkg/ggorm",
243-
},
244240
}...)
245241

246242
return fields

cmd/sponge/commands/generate/handler.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@ func HandlerCommand() *cobra.Command {
3434
3535
Examples:
3636
# generate handler code and embed gorm.model struct.
37-
sponge web handler --module-name=yourModuleName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user
37+
sponge web handler --module-name=yourModuleName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user
3838
3939
# generate handler code with multiple table names.
40-
sponge web handler --module-name=yourModuleName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=t1,t2
40+
sponge web handler --module-name=yourModuleName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=t1,t2
4141
4242
# generate handler code, structure fields correspond to the column names of the table.
43-
sponge web handler --module-name=yourModuleName --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --embed=false
43+
sponge web handler --module-name=yourModuleName --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --embed=false
4444
4545
# generate handler code and specify the server directory, Note: code generation will be canceled when the latest generated file already exists.
46-
sponge web handler --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --out=./yourServerDir
46+
sponge web handler --db-driver=mysql --db-dsn=root:123456@(192.168.3.37:3306)/test --db-table=user --out=./yourServerDir
4747
`,
4848
SilenceErrors: true,
4949
SilenceUsage: true,
@@ -91,10 +91,10 @@ using help:
9191
},
9292
}
9393

94-
cmd.Flags().StringVarP(&sqlArgs.DBDriver, "db-driver", "k", "mysql", "database driver, support mysql, postgresql")
9594
cmd.Flags().StringVarP(&moduleName, "module-name", "m", "", "module-name is the name of the module in the go.mod file")
9695
//_ = cmd.MarkFlagRequired("module-name")
97-
cmd.Flags().StringVarP(&sqlArgs.DBDsn, "db-dsn", "d", "", "database content address, e.g. user:password@(host:port)/database")
96+
cmd.Flags().StringVarP(&sqlArgs.DBDriver, "db-driver", "k", "mysql", "database driver, support mysql, postgresql, tidb, sqlite")
97+
cmd.Flags().StringVarP(&sqlArgs.DBDsn, "db-dsn", "d", "", "database content address, e.g. user:password@(host:port)/database. Note: if db-driver=sqlite, db-dsn must be a local sqlite db file, e.g. --db-dsn=/tmp/sponge_sqlite.db") //nolint
9898
_ = cmd.MarkFlagRequired("db-dsn")
9999
cmd.Flags().StringVarP(&dbTables, "db-table", "t", "", "table name, multiple names separated by commas")
100100
_ = cmd.MarkFlagRequired("db-table")
@@ -187,10 +187,6 @@ func (g *handlerGenerator) addFields(r replacer.Replacer) []replacer.Field {
187187
New: g.codes[parser.TableName],
188188
IsCaseSensitive: true,
189189
},
190-
{
191-
Old: "github.com/zhufuyi/sponge/pkg/ggorm",
192-
New: "user/pkg/ggorm",
193-
},
194190
}...)
195191

196192
return fields

cmd/sponge/commands/generate/http-pb.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func (g *httpPbGenerator) addFields(r replacer.Replacer) []replacer.Field {
162162
fields = append(fields, deleteFieldsMark(r, gitIgnoreFile, wellStartMark, wellEndMark)...)
163163
fields = append(fields, deleteAllFieldsMark(r, protoShellFile, wellStartMark, wellEndMark)...)
164164
fields = append(fields, deleteAllFieldsMark(r, appConfigFile, wellStartMark, wellEndMark)...)
165-
fields = append(fields, deleteFieldsMark(r, deploymentConfigFile, wellStartMark, wellEndMark)...)
165+
//fields = append(fields, deleteFieldsMark(r, deploymentConfigFile, wellStartMark, wellEndMark)...)
166166
fields = append(fields, replaceFileContentMark(r, readmeFile, "## "+g.serverName)...)
167167
fields = append(fields, []replacer.Field{
168168
{ // replace the configuration of the *.yml file
@@ -197,10 +197,10 @@ func (g *httpPbGenerator) addFields(r replacer.Replacer) []replacer.Field {
197197
Old: dockerComposeFileMark,
198198
New: dockerComposeFileHTTPCode,
199199
},
200-
{ // replace the contents of the *-configmap.yml file
201-
Old: deploymentConfigFileMark,
202-
New: getDBConfigCode(DBDriverMysql, true),
203-
},
200+
//{ // replace the contents of the *-configmap.yml file
201+
// Old: deploymentConfigFileMark,
202+
// New: getDBConfigCode(DBDriverMysql, true),
203+
//},
204204
{ // replace the contents of the *-deployment.yml file
205205
Old: k8sDeploymentFileMark,
206206
New: k8sDeploymentFileHTTPCode,

0 commit comments

Comments
 (0)