sqldb

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 2, 2020 License: MIT Imports: 20 Imported by: 0

README

sqldb

Simple and Powerful ORM for Go, support mysql,postgres,sqlite3

Documentation

Index

Constants

View Source
const DefaultDBAlias = "default"

Variables

View Source
var (
	ErrRecordNotFound     = errors.New("record not found")
	ErrMissingWhereClause = errors.New("missing WHERE clause while deleting")
)

Functions

func ConvertInSQL

func ConvertInSQL(sql string) string

func Expr

func Expr(expr string, args ...interface{}) *clause.Expr

func GetPolicyHandler

func GetPolicyHandler(name string) (handlerFunc interface{}, ok bool)

func IndirectType

func IndirectType(v reflect.Type) reflect.Type

func IsChar

func IsChar(c rune) bool

func IsInsertSQL

func IsInsertSQL(sql string) bool

func IsIntZero

func IsIntZero(value reflect.Value) bool

func IsNil

func IsNil(val reflect.Value) bool

func MakeMapScan

func MakeMapScan(rows *sqlx.Rows) (map[string]interface{}, error)

func ParseMapScan

func ParseMapScan(rows *sqlx.Rows, mapValue map[string]interface{}) error

func RegisterPolicyHandler

func RegisterPolicyHandler(name string, handler interface{})

func ScanAll

func ScanAll(rows *sqlx.Rows, dest DestWrapper) error

func SetClauseBuilder

func SetClauseBuilder(name string, builder clause.ClauseBuilder)

Types

type ClusterConfig

type ClusterConfig struct {
	Driver string
	Master *Config
	Slaves []*Config
	Policy *PolicyOptions
}

type Config

type Config struct {
	Driver string
	DNS    string

	MaxConns     int
	MaxIdleConns int
	MaxLifetime  int
}

type Connection

type Connection struct {
	*sqlx.DB
}

type ConnectionEngine

type ConnectionEngine struct {
	Dialector dialects.Dialector
	// contains filtered or unexported fields
}

func (*ConnectionEngine) Master

func (engine *ConnectionEngine) Master() *Connection

func (*ConnectionEngine) Slave

func (engine *ConnectionEngine) Slave() *Connection

func (*ConnectionEngine) Slaves

func (engine *ConnectionEngine) Slaves() []*Connection

type DBConfig

type DBConfig map[string]interface{}

type DestWrapper

type DestWrapper struct {
	Dest         interface{}
	ReflectValue reflect.Value
}

type EngineGroup

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

func NewDBEngineGroup

func NewDBEngineGroup(conf DBConfig, showSQL bool) (engineGroup *EngineGroup, err error)

func OpenDBEngine

func OpenDBEngine(conf DBConfig, showSQL bool) (*EngineGroup, error)

func OpenSingleDBEngine

func OpenSingleDBEngine(conf *Config, showSQL bool) (*EngineGroup, error)

func (*EngineGroup) Begin

func (eg *EngineGroup) Begin() (*SqlDB, error)

func (*EngineGroup) BeginContext

func (eg *EngineGroup) BeginContext(ctx context.Context) (*SqlDB, error)

func (*EngineGroup) Close

func (eg *EngineGroup) Close()

func (*EngineGroup) Commit

func (eg *EngineGroup) Commit() error

func (*EngineGroup) DriverName

func (eg *EngineGroup) DriverName() string

func (*EngineGroup) Exec

func (eg *EngineGroup) Exec(query string, args ...interface{}) (result sql.Result, err error)

func (*EngineGroup) ExecContext

func (eg *EngineGroup) ExecContext(ctx context.Context, query string, args ...interface{}) (result sql.Result, err error)

func (*EngineGroup) Query

func (eg *EngineGroup) Query(query string, args ...interface{}) (rows *sqlx.Rows, err error)

func (*EngineGroup) QueryContext

func (eg *EngineGroup) QueryContext(ctx context.Context, query string, args ...interface{}) (rows *sqlx.Rows, err error)

func (*EngineGroup) QueryRow

func (eg *EngineGroup) QueryRow(query string, args ...interface{}) (row *sqlx.Row)

func (*EngineGroup) QueryRowContext

func (eg *EngineGroup) QueryRowContext(ctx context.Context, query string, args ...interface{}) (row *sqlx.Row)

func (*EngineGroup) Raw

func (eg *EngineGroup) Raw(query string, args ...interface{}) *RawSession

func (*EngineGroup) RawContext

func (eg *EngineGroup) RawContext(ctx context.Context, query string, args ...interface{}) *RawSession

func (*EngineGroup) Rebind

func (eg *EngineGroup) Rebind(query string) string

func (*EngineGroup) Rollback

func (eg *EngineGroup) Rollback() error

func (*EngineGroup) SetPolicy

func (eg *EngineGroup) SetPolicy(dbAlias string, policy IPolicy) *EngineGroup

func (*EngineGroup) Table

func (eg *EngineGroup) Table(table string) *Session

func (*EngineGroup) TableContext

func (eg *EngineGroup) TableContext(ctx context.Context, table string) *Session

func (*EngineGroup) Tx

func (eg *EngineGroup) Tx(fn func(db *SqlDB) error) (err error)

func (*EngineGroup) TxContext

func (eg *EngineGroup) TxContext(ctx context.Context, fn func(db *SqlDB) error) (err error)

func (*EngineGroup) Use

func (eg *EngineGroup) Use(dbAlias ...string) *SqlDB

type ExecResult

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

type IPolicy

type IPolicy interface {
	Slave(engine *ConnectionEngine) *Connection
}

type ISqlx

type ISqlx interface {
	Queryx(query string, args ...interface{}) (*sqlx.Rows, error)
	QueryxContext(ctx context.Context, query string, args ...interface{}) (*sqlx.Rows, error)
	QueryRowx(query string, args ...interface{}) *sqlx.Row
	QueryRowxContext(ctx context.Context, query string, args ...interface{}) *sqlx.Row
	Exec(query string, args ...interface{}) (sql.Result, error)
	ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)

	Rebind(query string) string
	DriverName() string
}

type PolicyHandler

type PolicyHandler func(engine *ConnectionEngine) *Connection

func LeastConnPolicy

func LeastConnPolicy() PolicyHandler

最小连接数访问负载策略

func RandomPolicy

func RandomPolicy() PolicyHandler

随机访问负载策略

func RoundRobinPolicy

func RoundRobinPolicy() PolicyHandler

轮询访问负载策略

func WeightRandomPolicy

func WeightRandomPolicy(params PolicyParams) PolicyHandler

权重随机访问负载策略

func WeightRoundRobinPolicy

func WeightRoundRobinPolicy(params PolicyParams) PolicyHandler

权重轮询访问负载策略

func (PolicyHandler) Slave

func (handler PolicyHandler) Slave(engine *ConnectionEngine) *Connection

type PolicyOptions

type PolicyOptions struct {
	Mode   string
	Params interface{}
}

type PolicyParams

type PolicyParams struct {
	Weights []int
}

type RawSession

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

func (*RawSession) Exec

func (raw *RawSession) Exec() (result sql.Result, err error)

func (*RawSession) Fetch

func (raw *RawSession) Fetch(dest interface{}) error

func (*RawSession) Master

func (raw *RawSession) Master() *RawSession

func (*RawSession) Query

func (raw *RawSession) Query() (rows *sqlx.Rows, err error)

func (*RawSession) QueryRow

func (raw *RawSession) QueryRow() (row *sqlx.Row)

type ReflectMapper

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

func NewReflectMapper

func NewReflectMapper(tagName string) *ReflectMapper

func NewReflectMapperFunc

func NewReflectMapperFunc(tagName string, f func(string) string) *ReflectMapper

func (*ReflectMapper) FieldByName

func (r *ReflectMapper) FieldByName(v reflect.Value, name string) reflect.Value

func (*ReflectMapper) FieldMap

func (r *ReflectMapper) FieldMap(v reflect.Value) map[string]reflect.Value

type Session

type Session struct {
	Error error
	// contains filtered or unexported fields
}

func NewSession

func NewSession(ctx context.Context, db *SqlDB, table string) *Session

func (*Session) AddClause

func (session *Session) AddClause(conds ...clause.Expression) *Session

func (*Session) AddError

func (session *Session) AddError(err error)

func (*Session) Asc

func (session *Session) Asc(columns ...string) *Session

升序字段

func (*Session) BulkCreate

func (session *Session) BulkCreate(data interface{}) (lastInsertIdList []int64, err error)

批量创建,返回表自增ID列表; 值可以map或struct组成的slice或array

func (*Session) BulkUpdate

func (session *Session) BulkUpdate(data map[string]interface{}) (affected int64, err error)

批量修改多个字段,返回受影响的行数

func (*Session) Clear

func (session *Session) Clear()

func (*Session) Count

func (session *Session) Count() (count int64, err error)

func (*Session) Create

func (session *Session) Create(data interface{}) (lastInsertId int64, err error)

单一创建,返回表自增ID; 值可以map或struct

func (*Session) Delete

func (session *Session) Delete() (affected int64, err error)

删除,必须要where条件,返回受影响的行数

func (*Session) Desc

func (session *Session) Desc(columns ...string) *Session

降序字段

func (*Session) Distinct

func (session *Session) Distinct(columns ...string) *Session

func (*Session) Exist

func (session *Session) Exist() (bool, error)

func (*Session) Find

func (session *Session) Find(dest interface{}) error

func (*Session) First

func (session *Session) First(dest interface{}) error

func (*Session) GroupBy

func (session *Session) GroupBy(name string) *Session

func (*Session) Having

func (session *Session) Having(query interface{}, args ...interface{}) *Session

func (*Session) Hint

func (session *Session) Hint(query string) *Session

func (*Session) Join

func (session *Session) Join(condition string, args ...interface{}) *Session

func (*Session) Limit

func (session *Session) Limit(limit int) *Session

func (*Session) Master

func (session *Session) Master() *Session

func (*Session) Not

func (session *Session) Not(query interface{}, args ...interface{}) *Session

func (*Session) Offset

func (session *Session) Offset(offset int) *Session

func (*Session) Or

func (session *Session) Or(query interface{}, args ...interface{}) *Session

func (*Session) OrderBy

func (session *Session) OrderBy(order string) *Session

func (*Session) Query

func (session *Session) Query() (*sqlx.Rows, error)

func (*Session) QueryRow

func (session *Session) QueryRow() *sqlx.Row

func (*Session) Select

func (session *Session) Select(columns ...string) *Session

func (*Session) SelectExpr

func (session *Session) SelectExpr(query string, args ...interface{}) *Session

func (*Session) Update

func (session *Session) Update(column string, value interface{}) (affected int64, err error)

修改单一字段,返回受影响的行数

func (*Session) Where

func (session *Session) Where(query interface{}, args ...interface{}) *Session

type SqlDB

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

func NewSqlDB

func NewSqlDB(engine *ConnectionEngine, logging bool) *SqlDB

func (*SqlDB) Begin

func (db *SqlDB) Begin() (*SqlDB, error)

func (*SqlDB) BeginContext

func (db *SqlDB) BeginContext(ctx context.Context) (*SqlDB, error)

func (*SqlDB) Commit

func (db *SqlDB) Commit() error

func (*SqlDB) DriverName

func (db *SqlDB) DriverName() string

func (*SqlDB) Exec

func (db *SqlDB) Exec(query string, args ...interface{}) (result sql.Result, err error)

func (*SqlDB) ExecContext

func (db *SqlDB) ExecContext(ctx context.Context, query string, args ...interface{}) (result sql.Result, err error)

func (*SqlDB) Query

func (db *SqlDB) Query(query string, args ...interface{}) (rows *sqlx.Rows, err error)

func (*SqlDB) QueryContext

func (db *SqlDB) QueryContext(ctx context.Context, query string, args ...interface{}) (rows *sqlx.Rows, err error)

func (*SqlDB) QueryRow

func (db *SqlDB) QueryRow(query string, args ...interface{}) (row *sqlx.Row)

func (*SqlDB) QueryRowContext

func (db *SqlDB) QueryRowContext(ctx context.Context, query string, args ...interface{}) (row *sqlx.Row)

func (*SqlDB) Raw

func (db *SqlDB) Raw(query string, args ...interface{}) *RawSession

func (*SqlDB) RawContext

func (db *SqlDB) RawContext(ctx context.Context, query string, args ...interface{}) *RawSession

func (*SqlDB) Rebind

func (db *SqlDB) Rebind(query string) string

func (*SqlDB) Rollback

func (db *SqlDB) Rollback() error

func (*SqlDB) Table

func (db *SqlDB) Table(table string) *Session

func (*SqlDB) TableContext

func (db *SqlDB) TableContext(ctx context.Context, table string) *Session

func (*SqlDB) Tx

func (db *SqlDB) Tx(fn func(db *SqlDB) error) (err error)

func (*SqlDB) TxContext

func (db *SqlDB) TxContext(ctx context.Context, fn func(db *SqlDB) error) (err error)

type Statement

type Statement struct {
	Dialector dialects.Dialector
	Tables    []clause.Table
	Clauses   map[string]clause.Clause
	SQL       strings.Builder
	SQLVars   []interface{}
	NamedVars []sql.NamedArg
	Hint      string // 用于指定数据库中间件的命令,比如 /*+TDDL:slave()*/
}

func (*Statement) AddClause

func (stmt *Statement) AddClause(v clause.IClause)

添加子句

func (*Statement) AddClauseIfNotExists

func (stmt *Statement) AddClauseIfNotExists(v clause.IClause)

如果子句不存在则添加

func (*Statement) AddSQLVar

func (stmt *Statement) AddSQLVar(writer clause.Writer, vars ...interface{})

添加sql占位符

func (*Statement) Build

func (stmt *Statement) Build(clauses ...string)

构建sql

func (*Statement) BuildCondition

func (stmt *Statement) BuildCondition(query interface{}, args ...interface{}) (conditions []clause.Expression, err error)

构建表达式

func (Statement) Quote

func (stmt Statement) Quote(field interface{}) string

func (Statement) QuoteTo

func (stmt Statement) QuoteTo(writer clause.Writer, field interface{})

转换sql格式

func (*Statement) ReInit

func (stmt *Statement) ReInit()

func (*Statement) WriteByte

func (stmt *Statement) WriteByte(c byte) error

func (*Statement) WriteQuoted

func (stmt *Statement) WriteQuoted(value interface{}) error

func (*Statement) WriteString

func (stmt *Statement) WriteString(str string) (int, error)

type StatementModifier

type StatementModifier interface {
	ModifyStatement(*Statement)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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