|
@@ -0,0 +1,67 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "flag"
|
|
|
+ "fmt"
|
|
|
+ "github.com/0xJacky/Nginx-UI/server/model"
|
|
|
+ "github.com/0xJacky/Nginx-UI/server/settings"
|
|
|
+ "gorm.io/driver/sqlite"
|
|
|
+ "gorm.io/gen"
|
|
|
+ "gorm.io/gorm"
|
|
|
+ "gorm.io/gorm/logger"
|
|
|
+ "log"
|
|
|
+ "path"
|
|
|
+)
|
|
|
+
|
|
|
+func main() {
|
|
|
+ // specify the output directory (default: "./query")
|
|
|
+ // ### if you want to query without context constrain, set mode gen.WithoutContext ###
|
|
|
+ g := gen.NewGenerator(gen.Config{
|
|
|
+ OutPath: "../../server/query",
|
|
|
+ Mode: gen.WithoutContext | gen.WithDefaultQuery,
|
|
|
+ //if you want the nullable field generation property to be pointer type, set FieldNullable true
|
|
|
+ FieldNullable: true,
|
|
|
+ //if you want to assign field which has default value in `Create` API, set FieldCoverable true, reference: https://gorm.io/docs/create.html#Default-Values
|
|
|
+ FieldCoverable: true,
|
|
|
+ // if you want to generate field with unsigned integer type, set FieldSignable true
|
|
|
+ /* FieldSignable: true,*/
|
|
|
+ //if you want to generate index tags from database, set FieldWithIndexTag true
|
|
|
+ /* FieldWithIndexTag: true,*/
|
|
|
+ //if you want to generate type tags from database, set FieldWithTypeTag true
|
|
|
+ /* FieldWithTypeTag: true,*/
|
|
|
+ //if you need unit tests for query code, set WithUnitTest true
|
|
|
+ /* WithUnitTest: true, */
|
|
|
+ })
|
|
|
+
|
|
|
+ // reuse the database connection in Project or create a connection here
|
|
|
+ // if you want to use GenerateModel/GenerateModelAs, UseDB is necessary or it will panic
|
|
|
+ var confPath string
|
|
|
+ flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file")
|
|
|
+ flag.Parse()
|
|
|
+
|
|
|
+ settings.Init(confPath)
|
|
|
+ dbPath := path.Join(path.Dir(settings.ConfPath), fmt.Sprintf("%s.db", settings.ServerSettings.Database))
|
|
|
+
|
|
|
+ var err error
|
|
|
+ db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{
|
|
|
+ Logger: logger.Default.LogMode(logger.Info),
|
|
|
+ PrepareStmt: true,
|
|
|
+ DisableForeignKeyConstraintWhenMigrating: true,
|
|
|
+ })
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalln(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ g.UseDB(db)
|
|
|
+
|
|
|
+ // apply basic crud api on structs or table models which is specified by table name with function
|
|
|
+ // GenerateModel/GenerateModelAs. And generator will generate table models' code when calling Excute.
|
|
|
+ g.ApplyBasic(model.GenerateAllModel()...)
|
|
|
+
|
|
|
+ // apply diy interfaces on structs or table models
|
|
|
+ g.ApplyInterface(func(method model.Method) {}, model.GenerateAllModel()...)
|
|
|
+
|
|
|
+ // execute the action of code generation
|
|
|
+ g.Execute()
|
|
|
+}
|