mgen

golang mgo 代码自动生成器, 生成对 mongodb 的 CRUD 操作代码

安装

使用

go get golang.org/x/tools/cmd/goimports
goimports
//go:generate goimports -wgo generate -x

interface command

NAME:
   flag interface - create model interface go file

USAGE:
   flag interface [command options] [arguments...]

OPTIONS:
   --package value, -p value  set interface file package name
   --help, -h                 show help (default: false)
model.mg.go
Host

mgo command

编写 配置文件, 然后使用命令生成. 可以参照 example

NAME:
   flag mgo - generate golang code

USAGE:
   flag mgo [command options] [arguments...]

OPTIONS:
   --config-file value, -c value  set the config file path
   --help, -h                     show help (default: false)

根据所传入的配置文件生成对应的 CRUD package.

mgen mgo -c xxx.yaml
xxx.mg.go

配置文件编写

简单的用法

执行后生成的Go文件: base.mg.go

collectionNameCRUD
  • NewUser() *User
  • (user *User) Insert() error
  • UpdateUserByID(id string, user *User) error
  • UpdateUser(selector interface{}, user *User) error
  • UpdateUserAll(selector interface{}, user *User) (*mgo.ChangeInfo, error)
  • FindUserByID(id string) (*User, error)
  • FindUserByQuery(query interface{}) (*User, error)
  • FindAllUserByQuery(query interface{}) ([]*User, error)
  • ExistUserByID(id string) (bool, error)
  • ExistUserByQuery(query interface{}) (bool, error)
  • DeleteUserByID(id string) error

进阶用法

执行后生成的Go文件: advanced.mgo.go

unique
valid

感谢

Package of validators and sanitizers for strings, numerics, slices and structs https://github.com/asaskevich/govalidator