gt

package module
v1.20.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2020 License: MIT Imports: 28 Imported by: 0

README

Erwin Schrödinger's Cat

gt使用手册 (v1.20.0+)

api快速开发业务框架,模型生成
通用增删改查,支持多表连接

demo:

gt-crud (单机)
micro-go (微服务)

API

API Examples

Model

// user model
type User struct {
	ID         uint64     `json:"id"`
	Name       string     `json:"name"`
	Createtime time.CTime `json:"createtime"`
}

// service model
type Service struct {
	ID   uint64 `json:"id"`
	Name string `json:"name"`
}

// order model
type Order struct {
	ID         uint64     `json:"id"`
	UserID     int64      `json:"user_id"`    // user id
	ServiceID  int64      `json:"service_id"` // service table id
	Createtime time.CTime `json:"createtime"` // createtime
}

// order detail
type OrderD struct {
	Order
	UserName    string `json:"user_name"`    // user table column name
	ServiceName string `json:"service_name"` // service table column `name`
}

    // select more
    // 多表查询
	// get more search
	var params = make(cmap.CMap)
	params.Add("user_id", "1")
	//params.Add("key", "梦") // key word
	params.Add("clientPage", "1") // 第一页
	params.Add("everyPage", "2") // 每页2条
	var or []*OrderD
	crud := NewCrud(
		Inner("order", "user", "order", "service"),
		//Left("order", "service"),
		Model(OrderD{}),
		Data(&or),
		SubWhereSQL("1 = 1", "2 = 2", ""),
	)
	err := crud.GetMoreBySearch(params).Error()
	if err != nil {
		log.Println(err)
	}
	t.Log("\n[User Info]:", or[0])
    
// output:
    TestGetMoreDataBySearch: db_test.go:243: 
        [User Info]: &{{1 1 1 "2019-01-28 15:07:06"} 梦sql 服务名称}
--- PASS: TestGetMoreDataBySearch (0.00s)
PASS

Struct Gt

gt:"sub_sql" 或 gt:"ignore"<忽略该字段解析,<可进行子查询>>

type Client struct {
	models.AdminCom
	Name    string `gorm:"type:varchar(30)" json:"name" valid:"required,len=2-20"` // 昵称
	Openid  string `json:"openid" gorm:"varchar(30);UNIQUE_INDEX:openid已存在"`       // openID
	HeadImg string `json:"head_img"`                                               // 头像
}

type ClientD struct {
	Client      // 头像
	BuyNum int8 `json:"buy_num" gt:"sub_sql"` // 购买次数
}
// search
func (c *Client) GetBySearch(params cmap.CMap) interface{} {

	buyNumSQL := "(select count(*) from `order` where client_id = `client`.id and status >= 3) as buy_num"
	var datas []*ClientD
	crud.Params(
		gt.Data(&datas),
		gt.SubSQL(buyNumSQL),
		)
	cd := crud.GetBySearch(params)
	if cd.Error() != nil {
		//log.Log.Error(err.Error())
		return result.CError(cd.Error())
	}
	return result.GetSuccessPager(datas, cd.Pager())
}
// output:
print sql: select `id`,`createtime`,`admin_id`,`name`,`openid`,`head_img`,(select count(*) from `order` where client_id = `client`.id and status >= 3) as buy_num from `client` order by id desc limit 0, 2 

gt:"field:fieldName"<特殊情况下,替代json解析>

    type CVB struct {
		ID          int64      `gorm:"type:bigint(20)" json:"id"`
		ClientVipID int64      `gorm:"type:bigint(20)" json:"client_vip_id"`
		ShopId      int64      `gorm:"type:bigint(20)" json:"shop_id"`
	}

	// 客户行为详情
	type CVBDe struct {
		CVB
		ClientName    string `json:"client_name"`
		VipType       int64  `json:"vip_type" gt:"sub_sql"`
		IsSp          int64  `json:"-" gt:"field:is_sp"`
	}
	gt := &GT{
		Params: &Params{
			InnerTable: []string{"client_vip_behavior", "client_vip", "client_vip", "client"},
			Model:      CVBDe{},
		},
	}
	sqlNt, sql, _, _, _ := GetMoreSearchSQL(gt)
	t.Log(sqlNt)
	t.Log(sql)
// output:
TestGetMoreSearchSQL: db_test.go:267: select count(`client_vip_behavior`.id) as total_num from `client_vip_behavior` inner join `client_vip` on `client_vip_behavior`.`client_vip_id`=`client_vip`.`id`  inner join `client` on `client_vip`.`client_id`=`client`.`id` 
TestGetMoreSearchSQL: db_test.go:268: select `client_vip_behavior`.`id`,`client_vip_behavior`.`client_vip_id`,`client_vip_behavior`.`shop_id`,`client`.`name` as client_name,`client_vip_behavior`.`is_sp` from `client_vip_behavior` inner join `client_vip` on `client_vip_behavior`.`client_vip_id`=`client_vip`.`id`  inner join `client` on `client_vip`.`client_id`=`client`.`id`  order by `client_vip_behavior`.id desc 

Crud Request

// GET Request
//func ToCMap(u *gin.Context) cmap.CMap {
//	err := u.Request.ParseForm()
//	if err != nil {
//		gt.Logger().Error(err.Error())
//		return nil
//	}
//	values := cmap.CMap(u.Request.Form)
//	xss.XssMap(values)
//	return values
//}

var crud = gt.NewCrud(
	gt.Model(Client{}),
)

// get data, by id
func (c *Client) GetByID(id string) (*Client, error) {

	var data Client // not use *Client
	crud.Params(gt.Data(&data))
	if err := crud.GetByID(id).Error(); err != nil {
		return nil, err
	}
	return &data, nil
}

// get data, limit and search
// clientPage 1, everyPage 10 default
func (c *Client) GetBySearch(params cmap.CMap) (datas []*Client, pager result.Pager, err error) {
	//var datas []*Client
	crud.Params(gt.Data(&datas))
	cd := crud.GetBySearch(params)
	if cd.Error() != nil {
		return nil, pager, cd.Error()
	}
	return datas, cd.Pager(), nil
}

// id支持批量删除(逗号分割), 如: id = 12,13,14
// delete data, by id
func (c *Client) Delete(id string) error {

	return crud.Delete(id).Error()
}

// update data
func (c *Client) Update(data *Client) (*Client, error) {

	crud.Params(gt.Data(data))
	if err := crud.Update().Error(); err != nil {
		return nil, err
	}
	return data, nil
}

// create data
func (c *Client) Create(data *Client) (*Client, error) {

	crud.Params(gt.Data(data))
	if err := crud.Create().Error(); err != nil {
		return nil, err
	}
	return data, nil
}

Crud More

多表查询支持多表/同一个mysql跨数据库查询/mock假数据等等
1.GetMoreBySearch

	// 多表查询
	// get more search
	var params = make(cmap.CMap)
	//params.Add("user_id", "1")
	//params.Add("key", "梦") // key work
	params.Add("clientPage", "1")
	params.Add("everyPage", "2")
	//params.Add("mock", "1") // mock data
	var or []*OrderD
	crud := NewCrud(
		// 支持同一个mysql多数据库跨库查询
		Inner("gt.order", "user"),
		Left("order", "service"),
		Model(OrderD{}),
		Data(&or),
		//SubWhereSQL("1 = 1", "2 = 2", ""),
	)
	err := crud.GetMoreBySearch(params).Error()
	if err != nil {
		log.Println(err)
	}
	t.Log("\n[User Info]:", or)

2.GetMoreByData

	var or []*OrderD
	cd := NewCrud(
		// 支持同一个mysql多数据库跨库查询
		Inner("order", "gt.user"),
		Left("order", "service"),
		Model(OrderD{}),
		Data(&or),
		KeyModel(OrderD{}),
	)
	err := cd.GetMoreByData(cmap.NewCMap()).Error()
	if err != nil {
		t.Error(err)
	}

CreateMore

// 批量创建
func TestCreateMoreDataJ(t *testing.T) {
    type UserPar struct {
		Name       string     `json:"name"`
		Createtime time.CTime `json:"createtime"`
	}
	type User struct {
		ID uint64 `json:"id"`
		UserPar
	}
	
	var up = []UserPar{
		{Name: "测试1", Createtime: time.CTime(time2.Now())},
		{Name: "测试2"},
	}
	crud := NewCrud(
		//Table("user"),
		Model(UserPar{}),
		Data(up),
		//SubSQL("(asdf) as a","(asdfa) as b"),
	)

	err := crud.CreateMore()
	t.Log(err)
}

  • 多模式配置文件

配置方式: conf/app.yaml 中 devMode = dev 对应conf/app-dev.yaml

GetDevMode

    type dba struct {
    	User        string
    	Password    string
    	Host        string
    	Name        string
    	MaxIdleConn int
    	MaxOpenConn int
    	// db log mode
    	Log bool
    }
    config := gt.Configger()
    dbS := &dba{
        user:     config.GetString("app.db.user"),
        password: config.GetString("app.db.password"),
        host:     config.GetString("app.db.host"),
        name:     config.GetString("app.db.name"),
    }
    // or
    dbS := &dba{}
    gt.Configger().GetStruct("app.db", dbS)

CacheManager

    ce = gt.NewCache()
    data := CacheModel{
		Time: 50 * CacheMinute,
		Data: user,
	}

	// key can use user.ID,user.Name,user
	// because it can be interface
	// set
	err := ce.Set(user, data)
	t.Log("set err: ", err)

	// get
	reply, _ := ce.Get(user)
	t.Log("user data :", reply.Data)

AesEnDe

log.Println("[加密测试]:", AesEn("123456"))
log.Println("[解密测试]:", AesDe("lIEbR7cEp2U10gtM0j8dCg=="))

Time

// 时间格式化2006-01-02 15:04:05
type CTime time.Time
// 时间格式化2006-01-02
type CDate time.Time 

JSONType

// 返回json类型
type CJSON []byte

Validator

func TestValidator(t *testing.T) {
    type Test struct {
		ID   int64  `json:"id" gt:"valid:required,min=0,max=5"`
		Name string `json:"name" gt:"valid:required,len=2-5;trans:用户名"`
	}

	// json data
	var test = Test{
		ID:   6,
		Name: "梦",
	}
	t.Log(Valid(test))

	// form data
	var maps = cmap.NewCMap()
	maps["name"] = append(maps["name"], "梦")
	info := ValidForm(maps, Test{})
	//t.Log(info == nil)
	t.Log(info)
}

CustomLog

func TestNewFileLog(t *testing.T) {

	myLog.Info("项目路径", projectPath)
	for {
		time.Sleep(1 * time.Second)
		myLog.Error("测试")
	}
}

SnowflakeId

func TestId(t *testing.T) {
	id, err := NewID(1)
	if err != nil {
		log.Print(err)
		return
	}
	t.Log(id.String())
}

Msg

消息中间件nsq

前提: 运行nsq, 参考docker-compose.yaml

参考:nsq_test.go

Extend Examples

Crud Selectsql

    sql := "update `user` set name=? where id=?"
    t.Log("[Info]:", crud.Select(sql, "梦sql", 1).Exec())
    var user []*User
	cd := crud.Params(
		Data(&user),
		//ClientPage(1), // serch()分页需要
		//EveryPage(2),
	).
		Select("select *from user").
		Select("where id > 0")
	if true {
		cd.Select("and 1=1")
	}
	cd.Search() // 查询 + 分页
    t.Log(crud.Pager()) // Search()分页数据
	//cd.Single() // 注释Search使用Single()直接查询

Crud Update

    type UserPar struct {
		Name string `json:"name"`
	}
	crud := crud.Params(
		//Table("user"),
		Model(User{}),
		Data(&UserPar{
			//ID:   1,
			Name: "梦S",
		}),
	)
	t.Log(crud.Update().RowsAffected())
	t.Log(crud.Select("`name` = ?", "梦").Update().RowsAffected())
	t.Log(crud.Error())

Transcation

    cd := crud.Begin()
	cd.Params(
		Table("user"),
		Data(&User{
			ID:   11234,
			Name: "梦S",
		}),
	).Create()
	if cd.Error() != nil {
		cd.Rollback()
	}
	cd.Params(
		Data(&User{
			Name: "梦SSS2",
		})).Create()
	if cd.Error() != nil {
		cd.Rollback()
	}
	// add select sql test
	var u []User
	cd.Params(Data(&u)).Select("select * from `user`").Select("where 1=1").Single()
	cd.Params(Data(&u)).Select("select * from `user`").Select("where 1=1").Single()
	//cd.DB().Raw("select * from `user`").Scan(&u)

	cd.Commit()
	if cd.Error() != nil {
		cd.Rollback()
	}

Use Gorm

模型定义需遵循:
gt v1.20以前参考模型定义v1
gt v1.20+参考模型定义v2

// example 1:
// 根据模型定义自动生成表
gt.NewDBTool().AutoMigrate(&User{},&Order{})
// 直接使用gorm:
db := gt.NewCrud().DB()

Mock Data

使用mock参数, 生成随机数据, 将不会进行数据库查询

    GetBySearch(params cmap.CMap) Crud     // search
    GetByData(params cmap.CMap) Crud       // get data no search
    GetMoreBySearch(params cmap.CMap) Crud // more search    
    // 以上三种支持mock参数,传递的参数mock=1即可

ps:
1.不支持CJSON类型, 请使用tag: faker:"-"进行过滤
2.不支持图片等实体文件数据
3.默认随机生成,如有长度等其他要求,请参考:faker_test

Crud clone

// 关于crud的
一个crud = gt.NewCrud()对象中的参数是共享的,通用的增删改查针对同一张表可复用  
如果进行了表关联或改变了模型, 需要重新cd = gt.NewCrud(),否则继续使用crud容易影响到其他使用这个变量的地方
  • 约定
    1.必须json tag, 模型结构体json 内容与表字段保持一致
    2.返回格式参考result
    3.多表关联命名, 模型中其他表字段命名: 他表名 + "_" + 他表字段名
    n.crud更多用法参考crud_mysql_test

Documentation

Index

Constants

View Source
const Version = "1.20.0+"

Variables

This section is empty.

Functions

func GetColParamSQL

func GetColParamSQL(model interface{}) (sql string)

get col ?

func GetColSQL

func GetColSQL(model interface{}) (sql string)

根据model中表模型的json标签获取表字段 将select* 变为对应的字段名

func GetColSQLAlias

func GetColSQLAlias(model interface{}, alias string) (sql string)

根据model中表模型的json标签获取表字段 将select* 中'*'变为对应的字段名 增加别名,表连接问题

func GetDataSQL

func GetDataSQL(gt *GT) (sql string, args []interface{})

get data sql

func GetInsertSQL

func GetInsertSQL(table string, params cmap.CMap) (sql string, args []interface{})

传入数据库表名 插入语句拼接

func GetMoreDataSQL added in v1.10.0

func GetMoreDataSQL(gt *GT)

More Table params: innerTables is inner join tables, must even number params: leftTables is left join tables return: select sql table1 as main table, include other tables_id(foreign key)

func GetMoreTableColumnSQL

func GetMoreTableColumnSQL(model interface{}, tables ...string) (sql string)

select * replace select more tables tables : table name / table alias name 主表放在tables中第一个, 紧接着为主表关联的外键表名(无顺序)

func GetParams

func GetParams(data interface{}) (params []interface{})

get data value like GetColSQL

func GetReflectTag

func GetReflectTag(reflectType reflect.Type, buf *bytes.Buffer)

层级递增解析tag

func GetReflectTagAlias

func GetReflectTagAlias(ref reflect.Type, buf *bytes.Buffer, alias string)

层级递增解析tag, 别名

func GetReflectTagMore

func GetReflectTagMore(ref reflect.Type, buf *bytes.Buffer, tables ...string)

层级递增解析tag, more tables

func GetSearchSQL

func GetSearchSQL(gt *GT) (sqlNt, sql string, clientPage, everyPage int64, args []interface{})

分页参数不传, 查询所有 默认根据id倒序 单张表

func GetSelectSearchSQL

func GetSelectSearchSQL(gt *GT) (sqlNt, sql string, clientPage, everyPage int64)

select sql

func GetUpdateSQL

func GetUpdateSQL(table string, params cmap.CMap) (sql string, args []interface{})

传入数据库表名 更新语句拼接

Types

type Crud

type Crud interface {
	// init crud
	Init(param *Params)
	// DB
	// Deprecated, use gt.DB() replace
	DB() *DBTool
	// new/replace param
	// return param
	Params(param ...Param) Crud

	// get url params
	// like form data
	GetBySearch(params cmap.CMap) Crud     // search
	GetByData(params cmap.CMap) Crud       // get data no search
	GetMoreByData(params cmap.CMap) Crud   // get data more table no search
	GetByID(id interface{}) Crud           // by id
	GetMoreBySearch(params cmap.CMap) Crud // more search

	// delete by id/ids
	Delete(id interface{}) Crud // delete

	// crud and search id
	// form data
	// [create/update] future all will use json replace form request
	// form will not update
	UpdateForm(params cmap.CMap) error // update
	CreateForm(params cmap.CMap) error // create

	// crud and search id
	// json data
	Update() Crud     // update
	Create() Crud     // create, include res insert id
	CreateMore() Crud // create more, data must array type, single table

	// select
	Select(q interface{}, args ...interface{}) Crud // select sql
	From(query string) Crud                         // from sql, if use search, From must only once
	Group(query string) Crud                        // the last group by
	Search(params cmap.CMap) Crud                   // search pager
	Single() Crud                                   // no search
	Exec() Crud                                     // exec insert/update/delete sql
	Error() error                                   // crud error
	RowsAffected() int64                            // inflect rows
	Pager() result.Pager                            // search pager
	Begin() Crud                                    // start a transaction
	Commit() Crud                                   // commit a transaction
	Rollback() Crud                                 // rollback a transaction
	SavePoint(name string) Crud                     // save a point
	RollbackTo(name string) Crud                    // rollback to point
}

crud is db driver extend

func NewCrud

func NewCrud(params ...Param) (crud Crud)

new crud

type DBTool

type DBTool struct {
	// db driver
	*gorm.DB
	// contains filtered or unexported fields
}

DB tool

func DB added in v1.10.0

func DB() *DBTool

single db

func (*DBTool) CreateData

func (db *DBTool) CreateData(table string, data interface{})

create

func (*DBTool) CreateDataResID

func (db *DBTool) CreateDataResID(table string, params cmap.CMap) (id uint64, err error)

创建数据,通用 返回id,事务,慎用 业务少可用

func (*DBTool) CreateFormData

func (db *DBTool) CreateFormData(table string, params cmap.CMap) error

via form data create

func (*DBTool) CreateMoreData

func (db *DBTool) CreateMoreData(table string, model interface{}, data interface{})

data must array type more data create single table

func (*DBTool) Delete

func (db *DBTool) Delete(table string, id interface{})

delete

func (*DBTool) ExecSQL

func (db *DBTool) ExecSQL(sql string, args ...interface{})

exec sql

func (*DBTool) GetBasicTypesData added in v1.9.4

func (db *DBTool) GetBasicTypesData(typ reflect.Type, data interface{}, sql string, args ...interface{})

func (*DBTool) GetData

func (db *DBTool) GetData(gt *GT)

获得数据, no search

func (*DBTool) GetDataByID

func (db *DBTool) GetDataByID(gt *GT, id interface{})

获得数据,根据id

func (*DBTool) GetDataByName

func (db *DBTool) GetDataByName(data interface{}, name, value string) (err error)

获得数据,根据name条件 Deprecated

func (*DBTool) GetDataBySQL

func (db *DBTool) GetDataBySQL(data interface{}, sql string, args ...interface{})

获得数据,根据sql语句,无分页

func (*DBTool) GetDataBySQLSearch

func (db *DBTool) GetDataBySQLSearch(data interface{}, sql, sqlNt string, clientPage, everyPage int64, args []interface{}) (pager result.Pager)

获得数据,根据sql语句,分页 args : sql参数'?' sql, sqlNt args 相同, 共用args

func (*DBTool) GetDataBySearch

func (db *DBTool) GetDataBySearch(gt *GT) (pager result.Pager)

获得数据,分页/查询

func (*DBTool) GetDataBySelectSQLSearch

func (db *DBTool) GetDataBySelectSQLSearch(gt *GT) (pager result.Pager)

select sql search

func (*DBTool) GetMoreData added in v1.10.0

func (db *DBTool) GetMoreData(gt *GT)

获得数据, no search

func (*DBTool) GetMoreDataBySearch

func (db *DBTool) GetMoreDataBySearch(gt *GT) (pager result.Pager)

More Table params: innerTables is inner join tables params: leftTables is left join tables return: search info table1 as main table, include other tables_id(foreign key)

func (*DBTool) NewDB

func (db *DBTool) NewDB()

new db driver

func (*DBTool) UpdateData

func (db *DBTool) UpdateData(gt *GT)

update

func (*DBTool) UpdateFormData

func (db *DBTool) UpdateFormData(table string, params cmap.CMap) (err error)

via form data update

func (*DBTool) UpdateStructData

func (db *DBTool) UpdateStructData(data interface{}) (err error)

结合struct修改

type GT

type GT struct {
	*Params
	// CMap
	CMaps cmap.CMap // params

	// select sql
	Select string // select sql
	From   string // only once
	Group  string // the last group
	Args   []interface{}
	// contains filtered or unexported fields
}

GT SQL struct

type Mysql added in v1.10.0

type Mysql struct {
	// contains filtered or unexported fields
}

implement Crud

func (*Mysql) Begin added in v1.10.0

func (c *Mysql) Begin() Crud

func (*Mysql) Commit added in v1.10.0

func (c *Mysql) Commit() Crud

func (*Mysql) Create added in v1.10.0

func (c *Mysql) Create() Crud

create

func (*Mysql) CreateForm added in v1.10.0

func (c *Mysql) CreateForm(params cmap.CMap) error

create

func (*Mysql) CreateMore added in v1.10.0

func (c *Mysql) CreateMore() Crud

== json data == create more

func (*Mysql) DB added in v1.10.0

func (c *Mysql) DB() *DBTool

func (*Mysql) Delete added in v1.10.0

func (c *Mysql) Delete(id interface{}) Crud

delete

func (*Mysql) Error added in v1.10.0

func (c *Mysql) Error() error

func (*Mysql) Exec added in v1.10.0

func (c *Mysql) Exec() Crud

func (*Mysql) From added in v1.10.0

func (c *Mysql) From(query string) Crud

func (*Mysql) GetByData added in v1.10.0

func (c *Mysql) GetByData(params cmap.CMap) Crud

func (*Mysql) GetByID added in v1.10.0

func (c *Mysql) GetByID(id interface{}) Crud

by id

func (*Mysql) GetBySearch added in v1.10.0

func (c *Mysql) GetBySearch(params cmap.CMap) Crud

search pager info

func (*Mysql) GetMoreByData added in v1.10.0

func (c *Mysql) GetMoreByData(params cmap.CMap) Crud

func (*Mysql) GetMoreBySearch added in v1.10.0

func (c *Mysql) GetMoreBySearch(params cmap.CMap) Crud

the same as search more tables

func (*Mysql) Group added in v1.10.0

func (c *Mysql) Group(query string) Crud

func (*Mysql) Init added in v1.20.0

func (c *Mysql) Init(param *Params)

init DBTool tool

func (*Mysql) Pager added in v1.10.0

func (c *Mysql) Pager() result.Pager

func (*Mysql) Params added in v1.10.0

func (c *Mysql) Params(params ...Param) Crud

func (*Mysql) Rollback added in v1.10.0

func (c *Mysql) Rollback() Crud

func (*Mysql) RollbackTo added in v1.20.0

func (c *Mysql) RollbackTo(name string) Crud

func (*Mysql) RowsAffected added in v1.10.0

func (c *Mysql) RowsAffected() int64

func (*Mysql) SavePoint added in v1.20.0

func (c *Mysql) SavePoint(name string) Crud

func (*Mysql) Search added in v1.10.0

func (c *Mysql) Search(params cmap.CMap) Crud

func (*Mysql) Select added in v1.10.0

func (c *Mysql) Select(q interface{}, args ...interface{}) Crud

create

func (*Mysql) Single added in v1.10.0

func (c *Mysql) Single() Crud

func (*Mysql) Update added in v1.10.0

func (c *Mysql) Update() Crud

update

func (*Mysql) UpdateForm added in v1.10.0

func (c *Mysql) UpdateForm(params cmap.CMap) error

update

type Param

type Param func(*Params)

func Data

func Data(Data interface{}) Param

func Inner added in v1.8.1

func Inner(InnerTables ...string) Param

func InnerTable

func InnerTable(InnerTables []string) Param

Deprecated

func KeyModel

func KeyModel(KeyModel interface{}) Param

func Left added in v1.8.1

func Left(LeftTable ...string) Param

func LeftTable

func LeftTable(LeftTable []string) Param

Deprecated

func Model

func Model(Model interface{}) Param

func SubSQL

func SubSQL(SubSQL ...string) Param

func SubWhereSQL

func SubWhereSQL(WhereSQL ...string) Param

Deprecated use WhereSQL replace

func Table

func Table(Table string) Param

func WhereSQL added in v1.20.0

func WhereSQL(WhereSQL string, args ...interface{}) Param

where sql and args, can not coexists with SubWhereSQL

func (Param) WhereSQL added in v1.20.0

func (p Param) WhereSQL(WhereSQL string, args ...interface{}) Param

type Params

type Params struct {
	// attributes
	InnerTable []string    // inner join tables
	LeftTable  []string    // left join tables
	Table      string      // table name
	Model      interface{} // table model, like User{}
	KeyModel   interface{} // key like model
	Data       interface{} // table model data, like var user User{}, it is 'user', it store real data

	// sub query
	SubSQL string // SubQuery SQL
	// where
	WhereSQL string // Where SQL
	// contains filtered or unexported fields
}

crud params

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL