This commit is contained in:
hailaz
2025-01-24 17:35:48 +08:00
parent ea3318d33c
commit 6022e917b8
2 changed files with 22 additions and 108 deletions

View File

@ -66,6 +66,7 @@ type (
CGenTplInput struct {
g.Meta `name:"tpl" config:"{CGenTplConfig}" usage:"{CGenTplUsage}" brief:"{CGenTplBrief}" eg:"{CGenTplEg}" ad:"{CGenTplAd}"`
Path string `name:"path" short:"p" brief:"{CGenTplBriefPath}" d:"./output"`
TplPath string `name:"tplPath" short:"tp" brief:"模板目录路径" d:"./template"`
Link string `name:"link" short:"l" brief:"{CGenDaoBriefLink}"`
Tables string `name:"tables" short:"t" brief:"{CGenDaoBriefTables}"`
TablesEx string `name:"tablesEx" short:"x" brief:"{CGenDaoBriefTablesEx}"`
@ -122,6 +123,25 @@ type (
DBFieldTypeName = string
)
// GetTables 获取数据库表结构信息
func GetTables(ctx context.Context, db gdb.DB) Tables {
tablesName, err := db.Tables(ctx)
if err != nil {
panic(err)
}
fmt.Println(tablesName)
tables := make(Tables, 0)
for _, v := range tablesName {
t, err := NewTable(ctx, db, v)
if err != nil {
panic(err)
}
t.SortFields(true)
tables = append(tables, t)
}
return tables
}
func (c CGenTpl) Tpl(ctx context.Context, in CGenTplInput) (out *CGenTplOutput, err error) {
// Clear old files
// if in.Clear {
@ -136,13 +156,12 @@ func (c CGenTpl) Tpl(ctx context.Context, in CGenTplInput) (out *CGenTplOutput,
// return nil, gerror.Wrapf(err, "create output directory failed")
// }
// }
db, err := in.GetDB()
if err != nil {
return nil, err
}
outputDir := "./output"
tplRootDir := "./testdata"
outputDir := in.Path
tplRootDir := in.TplPath
tplRootDir = gfile.Abs(tplRootDir)
fmt.Println(tplRootDir)
tplList, err := gfile.ScanDirFile(tplRootDir, "*.tpl", true)

View File

@ -1,105 +0,0 @@
package tpl
import (
"context"
"fmt"
"path/filepath"
"strings"
_ "github.com/gogf/gf/contrib/drivers/clickhouse/v2"
_ "github.com/gogf/gf/contrib/drivers/mssql/v2"
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
_ "github.com/gogf/gf/contrib/drivers/oracle/v2"
_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/gview"
"github.com/gogf/gf/cmd/gf/v2/internal/utility/utils"
)
// GetTables description
//
// createTime: 2023-12-11 16:21:43
//
// author: hailaz
func GetTables(ctx context.Context, db gdb.DB) Tables {
tablesName, err := db.Tables(ctx)
if err != nil {
panic(err)
}
fmt.Println(tablesName)
tables := make(Tables, 0)
for _, v := range tablesName {
t, err := NewTable(ctx, db, v)
if err != nil {
panic(err)
}
t.SortFields(true)
tables = append(tables, t)
}
return tables
}
func Tpl() {
ctx := context.TODO()
db, _ := gdb.Instance("test")
outputDir := "./output"
tplRootDir := "./testdata"
tplRootDir = gfile.Abs(tplRootDir)
fmt.Println(tplRootDir)
tplList, err := gfile.ScanDirFile(tplRootDir, "*.tpl", true)
if err != nil {
panic(err)
}
fmt.Println(tplList)
fmt.Printf("%#v\n", Table{})
fmt.Printf("%#v\n", TableField{})
tables := GetTables(ctx, db)
view := gview.New()
for _, table := range tables {
table.PackageName = "github.com/gogf/gf/cmd/gf/v2"
tplData := g.Map{
"table": table,
"tables": tables,
}
fmt.Println(table.FieldsJsonStr("Snake"))
for _, tpl := range tplList {
tplDir := gfile.Dir(tpl)
res, err := view.Parse(ctx, tpl, tplData)
if err != nil {
panic(err)
}
// fmt.Println(res, err)
filePath := filepath.FromSlash(fmt.Sprintf(outputDir+"%s/%s.go", strings.TrimPrefix(tplDir, tplRootDir), table.Name))
err = gfile.PutContents(filePath, res)
if err != nil {
panic(err)
}
utils.GoFmt(filePath)
}
}
return
// res, err := view.ParseContent(ctx, `{{range $i,$v := .tables}}{{$i}} ---- {{$v}} {{$v.Name}}
// {{$v.FieldsJsonStr}}
// {{range $k,$vv := $v.Fields}}{{$k}} ---- {{$vv}}
// {{end}}
// {{end}}
// `, g.Map{"tables": tables})
// if err != nil {
// panic(err)
// }
// fmt.Println(res, err)
}