一个简单的代码生成器(Gint)

Gint提供从实体到CURD-L的能力,存储层基于Gorm实现,server使用了Gin框架。

Gint初始化

新建项目

go mod init ginttest cd ginttest go mod tidy

执行Gint初始化,可以方便的得到一个Schema定义的框架。

go run gitee.com/wennmu/gint.git init

生成的代码目录:

--gint ----gint.yml // schema定义文件 ----generate.go // 生成代码脚本

定义实体以及边

在gint.yml配置文件中增加实体定义

varsion: 1 schemas: - name: User fields: - name: name ftype: string anno: - name: Addr ftype: string anno: - name: Phone ftype: string anno: edges: - from: Team to: Order mode: 2

生成代码

执行命令生成schema的代码。

go generate ./...

启动服务

新建main.go添加如下代码:

package main import ( "fmt" "ginttest/gint" "github.com/gin-gonic/gin" "gorm.io/driver/sqlite" "gorm.io/gorm" "log" ) func main() { db, err := gint.Open(sqlite.Open("gint.db"), &gorm.Config{}) if err != nil { log.Fatal("open db err") } if err = db.CreateMigrate(); err != nil { log.Fatal("migrate err") } r := gin.Default() gint.RegisterGintRouter(r, "api", func(c *gin.Context) { fmt.Println("中间件") c.Next() }) err = r.Run(":8000") if err != nil { panic(err) return } }

Gint仓库

Github: github.com/wennmu/gint.git

Gitee: gitee.com/wennmu/gint.git