Ent

简介

  • facebook开发的golang数据库ORM
  • 使用前需要定义schema,可以从数据库导入

使用方法

// get ent
go run -mod=mod entgo.io/ent/cmd/ent init 

// get entimport
go run -mod=mod ariga.io/entimport/cmd/entimport -h

// copy schema from our database
go run ariga.io/entimport/cmd/entimport -dsn "postgres://postgresql:postgresql@domain:port/service?sslmode=disable"

// genertate code
go generate ./ent

// add OnConflict()
go run -mod=mod entgo.io/ent/cmd/ent generate --feature sql/upsert ./ent/schema 

// mock db test
import (
	_ "github.com/mattn/go-sqlite3"
	".../ent/enttest"
	"testing"
)
func NewMockTrainServiceDB(t *testing.T) *TrainServiceDB {
	client := enttest.Open(t, "sqlite3", "file:ent.db?mode=memory&_fk=1")
	return &TrainServiceDB{
		client: client,
	}
}

注意事项

  • 目前不支持default,需要手动添加相应字段的值

参考资料