obj

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Nov 25, 2024 License: Apache-2.0 Imports: 7 Imported by: 7

Documentation

Overview

Package obj 提供user数据库表在go程序的结构体映射,一般用于model层调用

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Property

type Property struct {
	Op     string
	Name   string
	Alias  string
	Key    string
	Path   string
	Tables []string
	DB     *TblDB
	Table  *TblTable
}

Property query 基础属性

type TblDB

type TblDB struct {
	Id        int       `orm:"id,int,omitempty" json:"id,omitempty"`
	Name      string    `orm:"name,string" json:"name,omitempty"`                    // 数据库名称
	Intro     string    `orm:"intro,string" json:"intro,omitempty"`                  // 中文简介
	Desc      string    `orm:"desc,string" json:"desc,omitempty"`                    // 详细介绍
	ProductID int       `orm:"product_id,int,omitempty" json:"product_id,omitempty"` // 产品id
	Creator   uint64    `orm:"creator,uint64,omitempty" json:"creator,omitempty"`    // Creator
	Manager   string    `orm:"manager,string" json:"manager,omitempty"`              // 管理员,多个逗号分隔
	Status    int8      `orm:"status,int8" json:"status,omitempty"`                  // 1-正常 2-下线
	CreatedAt time.Time `orm:"created_at,datetime,omitempty" json:"created_at"`      // 记录创建时间
	UpdatedAt time.Time `orm:"updated_at,datetime,omitempty" json:"updated_at"`      // 记录最后修改时间

	// db params
	WriteTimeoutTmp int  `orm:"write_timeout,int" json:"write_timeout,omitempty"` // 写超时(毫秒)
	ReadTimeoutTmp  int  `orm:"read_timeout,int" json:"read_timeout,omitempty"`   // 读超时(毫秒)
	WarnTimeoutTmp  int  `orm:"warn_timeout,int" json:"warn_timeout,omitempty"`   // 告警超时(ms),如果请求耗时超过这个时间,就会打 warning 日志
	OmitErrorTmp    int8 `orm:"omit_error,int8" json:"omit_error,omitempty"`      // 是否忽略 error 日志,0-否 1-是
	DebugTmp        int8 `orm:"debug,int8" json:"debug,omitempty"`                // 是否开启 debug 日志,正常的数据库请求也会被打印到日志,0-否 1-是,会造成海量日志,慎重开启

	// db address
	Type       int    `orm:"type,int" json:"type,omitempty"`                  // 数据库类型 0-nil(仅执行插件) 1-elastic 2-mongo 3-redis 10-mysql 11-postgresql 12-clickhouse 13-oracle 14-DB2 15-sqlite
	Version    string `orm:"version,string" json:"version,omitempty"`         // 数据库版本,比如elastic v6,v7
	Network    string `orm:"network,string" json:"network,omitempty"`         // network
	Address    string `orm:"address,string" json:"address,omitempty"`         // address
	BakAddress string `orm:"bak_address,string" json:"bak_address,omitempty"` // backup address

	Addr *util.DBAddress
}

type TblTable

type TblTable struct {
	Id          int       `orm:"id,int,omitempty" json:"id"`
	Name        string    `orm:"name,string" json:"name"`                           // 数据名称(执行单元名)
	Namespace   string    `orm:"namespace,string" json:"namespace"`                 // 命名空间,当出现重名表的时候,用 namespace::name 来访问数据库,默认为库名
	Intro       string    `orm:"intro,string" json:"intro"`                         // 中文简介
	Desc        string    `orm:"desc,string" json:"desc"`                           // 详细描述
	TableVerify string    `orm:"table_verify,string" json:"table_verify"`           // 表校验,为空时不校验,默认同 name,即只允许访问 name 表/索引
	DB          int       `orm:"db,int" json:"db"`                                  // 所属数据库
	Definition  string    `orm:"definition,string" json:"definition"`               // 表定义
	TableFields string    `orm:"table_fields,string" json:"table_fields"`           // 表字段
	TableIndexs string    `orm:"table_indexs,string" json:"table_indexs"`           // 表索引
	Status      int8      `orm:"status,int8" json:"status"`                         // 1-正常 2-下线
	Creator     uint64    `orm:"creator,uint64,omitempty" json:"creator,omitempty"` // Creator
	CreatedAt   time.Time `orm:"created_at,datetime,omitempty" json:"created_at"`   // 记录创建时间
	UpdatedAt   time.Time `orm:"updated_at,datetime,omitempty" json:"updated_at"`   // 记录最后修改时间
}

type TransInfo

type TransInfo struct {
	Trans     *Tree                    // 事务下的查询节点
	Rollback  bool                     // 是否回滚
	TxClients map[string]client.Client // sql 事务执行 client,(目前仅支持 sql 的事务 commit、rollback)
	DBs       []string                 // 参与事务的所有 db。
}

TransInfo 事务信息

func (*TransInfo) GetTxClient

func (ti *TransInfo) GetTxClient(dsn string) client.Client

func (*TransInfo) ResetTxClient

func (ti *TransInfo) ResetTxClient()

func (*TransInfo) SetTxClient

func (ti *TransInfo) SetTxClient(dsn string, cli client.Client)

type Tree

type Tree struct {
	Name string // 查询名

	Next     *Tree   // 同层级下一个查询节点
	Last     *Tree   // 同层级上一个查询节点
	Sub      *Tree   // 嵌套子查询节点
	Parent   *Tree   // 父查询节点
	Real     *Tree   // 真实查询信息存储节点
	SubQuery []*Tree // 子查询实际执行节点

	HasSub  bool // 是否包含子查询
	IsSub   bool // 本节点是否是子查询
	InTrans bool // 本节点是否在事务中

	// 返回结果
	Finished  int8          // 查询单元是否执行完毕 0-未执行 1-已执行 2-待回滚
	ParentRet interface{}   // 父查询的多条结果记录分别存入各个子查询。
	IsNil     bool          // 结果为空
	Detail    *proto.Detail // 查询细节信息
	Result    interface{}   // 查询结果
	Error     error         // 查询错误

	// 查询信息
	Unit     *proto.Unit // 查询单元
	Property *Property   // query 基础属性

	// 事务
	TransInfo *TransInfo // 事务信息
}

Tree 查询分析树

func (*Tree) GetAlias

func (node *Tree) GetAlias() string

GetAlias 获取执行单元别名

func (*Tree) GetDB

func (node *Tree) GetDB() *TblDB

GetDB 获取数据库配置

func (*Tree) GetErrorCode

func (node *Tree) GetErrorCode() int

GetErrorCode 获取 error code

func (*Tree) GetErrorMsg

func (node *Tree) GetErrorMsg() string

GetErrorMsg 获取 error msg

func (*Tree) GetKey

func (node *Tree) GetKey() string

GetKey 获取执行单元 key

func (*Tree) GetName

func (node *Tree) GetName() string

GetName 获取数据名称(执行单元名)

func (*Tree) GetOp

func (node *Tree) GetOp() string

GetOp 获取 op

func (*Tree) GetPath

func (node *Tree) GetPath() string

GetPath 获取执行单元路径

func (*Tree) GetReal

func (node *Tree) GetReal() *Tree

GetReal 获取执行节点的真实查询信息所在节点。

func (*Tree) GetTable

func (node *Tree) GetTable() *TblTable

GetTable 获取表信息

func (*Tree) GetUnit

func (node *Tree) GetUnit() *proto.Unit

GetUnit 获取 unit

func (*Tree) IsArray

func (node *Tree) IsArray() bool

IsArray 是否获取数组

func (*Tree) IsSuccess

func (node *Tree) IsSuccess() bool

IsSuccess 是否执行成功

func (*Tree) IsTransaction

func (node *Tree) IsTransaction() bool

IsTransaction 是否是事务

func (*Tree) SetProperty

func (node *Tree) SetProperty(property *Property) *Tree

SetProperty 设置查询属性

func (*Tree) Tables

func (node *Tree) Tables() []string

Tables 获取表名

Jump to

Keyboard shortcuts

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