1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package main
- import (
- "fmt"
- "gorm.io/driver/mysql"
- "gorm.io/gen"
- "gorm.io/gorm"
- "gorm.io/gorm/logger"
- "strings"
- )
- type Config struct {
- DbAddr string `json:"dbAddr,omitempty"`
- DbSchema string `json:"dbSchema,omitempty"`
- DbUser string `json:"dbUser,omitempty"`
- DbPwd string `json:"dbPwd,omitempty"`
- }
- func main() {
- fmt.Println("db2code started ....")
- defer fmt.Println("db2code stopped ....")
- cfg := &Config{
- DbAddr: "158.8.12.102:3308",
- DbSchema: "ticket-cloud",
- DbUser: "root",
- DbPwd: "ticket@2025",
- }
- db := initDb(cfg)
- genStructs(db)
- }
- func initDb(cfg *Config) *gorm.DB {
- if cfg == nil {
- panic("can not init db wih nil config")
- }
- dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
- cfg.DbUser,
- cfg.DbPwd,
- cfg.DbAddr,
- cfg.DbSchema)
- if db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
- Logger: logger.Default.LogMode(logger.Info),
- }); err != nil {
- panic(fmt.Sprintf("try connect to db fail, dsn: '%s', error info: %v",
- dsn, err))
- } else {
- return db
- }
- }
- func genStructs(db *gorm.DB) {
- g := gen.NewGenerator(gen.Config{
- OutPath: "po",
- WithUnitTest: false,
- FieldNullable: true,
- FieldCoverable: true,
- FieldSignable: false,
- FieldWithIndexTag: true,
- FieldWithTypeTag: true,
- Mode: gen.WithDefaultQuery | gen.WithQueryInterface,
- })
- g.WithDataTypeMap(map[string]func(columnType gorm.ColumnType) (dataType string){
- "tinyint": func(filedType gorm.ColumnType) string {
- if ct, ok := filedType.ColumnType(); ok {
- if strings.HasPrefix(strings.ToLower(ct), "tinyint(1)") {
- return "int8"
- }
- return "int16"
- } else {
- return "int32"
- }
- },
- })
- g.UseDB(db)
- g.GenerateAllTable()
- g.Execute()
- }
|