package main

import (
	"strings"

	_ "github.com/go-sql-driver/mysql"
	"gorm.io/driver/mysql"
	"gorm.io/gen"
	"gorm.io/gorm"
)

func main() {
	dsn := "root:1234567890@tcp(localhost:3306)/goods_library?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("gorm 打开数据库出错：" + err.Error())
	}

	g := gen.NewGenerator(gen.Config{
		OutPath:           "./src/mapper",
		ModelPkgPath:      "./src/models",
		Mode:              gen.WithDefaultQuery | gen.WithQueryInterface | gen.WithoutContext,
		FieldNullable:     false,
		FieldCoverable:    false,
		FieldSignable:     true,
		FieldWithIndexTag: true,
		FieldWithTypeTag:  true,
	})

	g.UseDB(db)

	tbNames, err := db.Migrator().GetTables()
	if err != nil {
		panic("get all tables fail: " + err.Error())
	}

	metas := make([]interface{}, 0)
	for _, v := range tbNames {
		if !strings.Contains(v, "_20") && !strings.Contains(v, "_default") {
			metas = append(metas, g.GenerateModel(v))
		}
	}

	g.ApplyBasic(metas...)

	// g.ApplyBasic(g.GenerateAllTable()...)

	// g.ApplyBasic(
	// 	g.GenerateModel("account_balance_log"),
	// )

	g.Execute()

	// 批量替换文件夹的内容
	// modelPath, err := filepath.Abs("./src/models")
	// log.Println("models path is：" + modelPath)
	// if err != nil {
	// 	log.Println(err)
	// }

	// log.Println("models file have replace")
}
