orm

package
v0.8.5 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2023 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrDbNotSelected                    = errors.New("db not selecteed")
	ErrTableNotExisted                  = errors.New("table not existed")
	ErrTableNotSelected                 = errors.New("table not selected")
	ErrColumnNotSelected                = errors.New("column not selected")
	ErrColumnNotExisted                 = errors.New("column not existed")
	ErrRawSqlRequired                   = errors.New("raw sql required")
	ErrParamMustBePtr                   = errors.New("param must be ptr")
	ErrParamElemKindMustBeStruct        = errors.New("param elem kind must be struct")
	ErrColumnShouldBeStringOrPtr        = errors.New("select|where column should be string or ptr of Table.T.field")
	ErrDestOfGetToMustBePtr             = errors.New("dest of Get-to must be ptr")
	ErrDestOfGetToSliceElemMustNotBePtr = errors.New("dest of Get-to slice elem kind must not be ptr")
)

Functions

func Open added in v0.7.5

func Open(driverName, dataSourceName string) (*sql.DB, error)

func OpenDB added in v0.7.5

func OpenDB(driver sqldriver.Connector) *sql.DB

func OpenMysql added in v0.7.5

func OpenMysql(dataSourceName string) (*sql.DB, error)

func Register added in v0.7.5

func Register(name string, drvier sqldriver.Driver)

func SliceContain

func SliceContain(array interface{}, val interface{}) (index int)

Types

type JoinType

type JoinType string
const (
	JoinTypeInner JoinType = "inner join"
	JoinTypeLeft  JoinType = "left join"
	JoinTypeRight JoinType = "right join"
	JoinTypeOuter JoinType = "outer join"
)

type JsonInt

type JsonInt int64

func (JsonInt) MarshalJSON

func (i JsonInt) MarshalJSON() ([]byte, error)

func (*JsonInt) Scan

func (i *JsonInt) Scan(v interface{}) error

func (JsonInt) ToString

func (i JsonInt) ToString() string

func (*JsonInt) UnmarshalJSON

func (i *JsonInt) UnmarshalJSON(data []byte) error

func (JsonInt) Value

func (i JsonInt) Value() (driver.Value, error)

type JsonTime

type JsonTime struct {
	time.Time
}

func (JsonTime) MarshalJSON

func (t JsonTime) MarshalJSON() ([]byte, error)

MarshalJSON on JsonTime format Time field with %Y-%m-%d %H:%M:%S

func (*JsonTime) Scan

func (t *JsonTime) Scan(v interface{}) error

Scan valueof time.Time

func (*JsonTime) UnmarshalJSON

func (t *JsonTime) UnmarshalJSON(data []byte) error

MarshalJSON on JsonTime format Time field with %Y-%m-%d %H:%M:%S

func (JsonTime) Value

func (t JsonTime) Value() (driver.Value, error)

Value insert timestamp into mysql need this function.

type Query

type Query[T Table] struct {
	T *T
	// contains filtered or unexported fields
}

func NewQuery added in v0.3.0

func NewQuery[T Table](t *T, writeAndReadDbs ...*sql.DB) *Query[T]

query table[struct] generics

func NewQueryRaw added in v0.5.1

func NewQueryRaw(tableName string, writeAndReadDbs ...*sql.DB) *Query[SubQuery]

query raw, tablename can be empty

func NewQuerySub added in v0.5.3

func NewQuerySub(subquery SubQuery) *Query[SubQuery]

query from subquery

func (*Query[T]) Alias added in v0.3.0

func (q *Query[T]) Alias(alias string) *Query[T]

func (*Query[T]) AllCols added in v0.3.0

func (q *Query[T]) AllCols() string

func (*Query[T]) Clone added in v0.8.4

func (q *Query[T]) Clone() *Query[T]

func (*Query[T]) CreateStruct added in v0.8.4

func (q *Query[T]) CreateStruct(file ...string) error

func (*Query[T]) CreateTable added in v0.8.4

func (q *Query[T]) CreateTable() (string, error)

func (*Query[T]) DB

func (q *Query[T]) DB() *sql.DB

func (*Query[T]) DBs added in v0.8.3

func (q *Query[T]) DBs() []*sql.DB

func (*Query[T]) Delete

func (q *Query[T]) Delete(primaryIds ...interface{}) QueryResult

func (*Query[T]) Execute added in v0.3.0

func (q *Query[T]) Execute() QueryResult

excute raw

func (*Query[T]) ForUpdate added in v0.4.0

func (q *Query[T]) ForUpdate(forUpdateType ...SelectForUpdateType) *Query[T]

func (*Query[T]) FromTable

func (q *Query[T]) FromTable(table Table, alias ...string) *Query[T]

func (*Query[T]) Get added in v0.3.0

func (q *Query[T]) Get(primaryIds ...interface{}) (T, QueryResult)

get first T

func (*Query[T]) GetCount added in v0.3.0

func (q *Query[T]) GetCount() (int64, QueryResult)

get count T

func (*Query[T]) GetRow added in v0.3.0

func (q *Query[T]) GetRow() (map[string]interface{}, QueryResult)

get first row

func (*Query[T]) GetRows added in v0.3.0

func (q *Query[T]) GetRows() ([]map[string]interface{}, QueryResult)

get slice row

func (*Query[T]) GetTo added in v0.3.0

func (q *Query[T]) GetTo(destPtr interface{}) QueryResult

destPtr: *int | *int64 | *string | ... destPtr: *[]int | *[]string | ... destPtr: *struct | *[]struct destPtr: *map [int | string | ...] int | string ... destPtr: *map [int | string | ...] struct destPtr: *map [int | string | ...] []struct

func (*Query[T]) Gets added in v0.3.0

func (q *Query[T]) Gets(primaryIds ...interface{}) ([]T, QueryResult)

get slice T

func (*Query[T]) GroupBy

func (q *Query[T]) GroupBy(columns ...interface{}) *Query[T]

should not use group by after order by

func (*Query[T]) Having

func (q *Query[T]) Having(column interface{}, vals ...interface{}) *Query[T]

func (*Query[T]) Insert

func (q *Query[T]) Insert(data T, tableFieldPtrs ...interface{}) QueryResult

tableFieldPtrs: allow insert table columns

func (*Query[T]) InsertSubquery added in v0.3.0

func (q *Query[T]) InsertSubquery(data SubQuery, updates []UpdateColumn, tableFieldPtrs ...interface{}) QueryResult

func (*Query[T]) Inserts added in v0.3.0

func (q *Query[T]) Inserts(data []T, tableFieldPtrs ...interface{}) QueryResult

tableFieldPtrs: allow insert table columns

func (*Query[T]) InsertsIgnore added in v0.3.0

func (q *Query[T]) InsertsIgnore(data []T, updates []UpdateColumn, tableFieldPtrs ...interface{}) QueryResult

insert ignore ... // on duplicate key update ...

func (*Query[T]) Join

func (q *Query[T]) Join(table Table, where func(join *Query[T]) *Query[T], alias ...string) *Query[T]

func (*Query[T]) LeftJoin

func (q *Query[T]) LeftJoin(table Table, where func(join *Query[T]) *Query[T], alias ...string) *Query[T]

func (*Query[T]) Limit

func (q *Query[T]) Limit(limit int) *Query[T]

func (*Query[T]) Offset

func (q *Query[T]) Offset(offset int) *Query[T]

func (*Query[T]) OrWhere

func (q *Query[T]) OrWhere(column interface{}, vals ...interface{}) *Query[T]

"id=1" &obj.id, 1 &obj.id, "=", 1

func (*Query[T]) OrWhereFunc added in v0.3.0

func (q *Query[T]) OrWhereFunc(f func(*Query[T]) *Query[T]) *Query[T]

"id=1" &obj.id, 1 &obj.id, "=", 1

func (*Query[T]) OrWherePrimary added in v0.7.2

func (q *Query[T]) OrWherePrimary(operator interface{}, vals ...interface{}) *Query[T]

short for OrWhere(primaryKey, vals...)

func (*Query[T]) OrderBy

func (q *Query[T]) OrderBy(column interface{}) *Query[T]

func (*Query[T]) OrderByDesc

func (q *Query[T]) OrderByDesc(column interface{}) *Query[T]

func (*Query[T]) OuterJoin added in v0.7.0

func (q *Query[T]) OuterJoin(table Table, where func(join *Query[T]) *Query[T], alias ...string) *Query[T]

func (*Query[T]) PartitionBy added in v0.4.0

func (q *Query[T]) PartitionBy(column interface{}) *Query[T]

func (*Query[T]) Raw added in v0.3.0

func (q *Query[T]) Raw(prepareSql string, bindings ...interface{}) *Query[T]

func (*Query[T]) RightJoin

func (q *Query[T]) RightJoin(table Table, where func(join *Query[T]) *Query[T], alias ...string) *Query[T]

func (*Query[T]) Select

func (q *Query[T]) Select(columns ...interface{}) *Query[T]

func (*Query[T]) SelectOver added in v0.5.2

func (q *Query[T]) SelectOver(windowFunc string, f func(query *Query[T]) *Query[T], alias string) *Query[T]

func (*Query[T]) SelectOverRaw added in v0.5.3

func (q *Query[T]) SelectOverRaw(windowFunc string, windowName string, alias string) *Query[T]

func (*Query[T]) SelectRank added in v0.4.0

func (q *Query[T]) SelectRank(column interface{}, alias string) *Query[T]

func (*Query[T]) SelectRankDesc added in v0.5.2

func (q *Query[T]) SelectRankDesc(column interface{}, alias string) *Query[T]

func (*Query[T]) SelectWithTimeout added in v0.7.6

func (q *Query[T]) SelectWithTimeout(duration time.Duration) *Query[T]

func (*Query[T]) SubQuery added in v0.3.0

func (q *Query[T]) SubQuery() SubQuery

func (*Query[T]) TableInterface added in v0.3.0

func (q *Query[T]) TableInterface() Table

func (*Query[T]) Transaction

func (q *Query[T]) Transaction(f func(query *Query[T]) error) error

func (*Query[T]) Tx added in v0.8.4

func (q *Query[T]) Tx() *sql.Tx

func (*Query[T]) Union added in v0.5.1

func (q *Query[T]) Union(subquery SubQuery) *Query[T]

func (*Query[T]) UnionAll added in v0.5.1

func (q *Query[T]) UnionAll(subquery SubQuery) *Query[T]

func (*Query[T]) Update

func (q *Query[T]) Update(column interface{}, val interface{}) QueryResult

func (*Query[T]) Updates

func (q *Query[T]) Updates(updates ...UpdateColumn) QueryResult

func (*Query[T]) UseDB

func (q *Query[T]) UseDB(db ...*sql.DB) *Query[T]

func (*Query[T]) UseTx

func (q *Query[T]) UseTx(tx *sql.Tx) *Query[T]

func (*Query[T]) Where

func (q *Query[T]) Where(column interface{}, vals ...interface{}) *Query[T]

"id=1" &obj.id, 1 &obj.id, "=", 1

func (*Query[T]) WhereFunc added in v0.3.0

func (q *Query[T]) WhereFunc(f func(*Query[T]) *Query[T]) *Query[T]

"id=1" &obj.id, 1 &obj.id, "=", 1

func (*Query[T]) WherePrimary added in v0.7.2

func (q *Query[T]) WherePrimary(operator interface{}, vals ...interface{}) *Query[T]

short for Where(primaryKey, vals...)

func (*Query[T]) WithChildrenOnColumn added in v0.5.1

func (q *Query[T]) WithChildrenOnColumn(pidColumn interface{}) *Query[T]

func (*Query[T]) WithContext added in v0.7.6

func (q *Query[T]) WithContext(ctx context.Context) *Query[T]

func (*Query[T]) WithCte added in v0.5.1

func (q *Query[T]) WithCte(subquery SubQuery, cteName string, columns ...string) *Query[T]

func (*Query[T]) WithParentsOnColumn added in v0.5.1

func (q *Query[T]) WithParentsOnColumn(pidColumn interface{}) *Query[T]

func (*Query[T]) WithRecursiveCte added in v0.5.1

func (q *Query[T]) WithRecursiveCte(subquery SubQuery, cteName string, columns ...string) *Query[T]

func (*Query[T]) WithWindow added in v0.5.1

func (q *Query[T]) WithWindow(subquery SubQuery, windowName string) *Query[T]

type QueryResult

type QueryResult struct {
	PrepareSql   string
	Bindings     []interface{}
	LastInsertId int64
	RowsAffected int64
	Err          error
}

func (QueryResult) Error added in v0.3.0

func (q QueryResult) Error() error

func (QueryResult) Sql

func (q QueryResult) Sql() string

type Raw

type Raw string

type SelectForUpdateType added in v0.4.0

type SelectForUpdateType string
const (
	SelectForUpdateTypeDefault    SelectForUpdateType = "for update"
	SelectForUpdateTypeNowait     SelectForUpdateType = "for update nowait"
	SelectForUpdateTypeSkipLocked SelectForUpdateType = "for update skip locked"
)

type SubQuery added in v0.3.0

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

func NewSubQuery added in v0.5.1

func NewSubQuery(prepareSql string, bindings ...interface{}) SubQuery

func (SubQuery) Connections added in v0.8.5

func (m SubQuery) Connections() []*sql.DB

func (SubQuery) DatabaseName added in v0.3.0

func (m SubQuery) DatabaseName() string

func (SubQuery) Error added in v0.3.0

func (m SubQuery) Error() error

func (SubQuery) Sql added in v0.5.3

func (m SubQuery) Sql() string

func (SubQuery) TableName added in v0.3.0

func (m SubQuery) TableName() string

type Table

type Table interface {
	Connections() []*sql.DB
	DatabaseName() string
	TableName() string
}

type UpdateColumn

type UpdateColumn struct {
	Column interface{}
	Val    interface{}
}

type WhereOperator

type WhereOperator Raw
const (
	WhereEqual          WhereOperator = "="
	WhereNotEqual       WhereOperator = "!="
	WhereGreatThan      WhereOperator = ">"
	WhereGreaterOrEqual WhereOperator = ">="
	WhereLessThan       WhereOperator = "<"
	WhereLessOrEqual    WhereOperator = "<="
	WhereIn             WhereOperator = "in"
	WhereNotIn          WhereOperator = "not in"
	WhereLike           WhereOperator = "like"
	WhereNotLike        WhereOperator = "not like"
	WhereRlike          WhereOperator = "rlike"
	WhereNotRlike       WhereOperator = "not rlike"
	WhereIsNull         WhereOperator = "is null"
	WhereIsNotNull      WhereOperator = "is not null"
)

Jump to

Keyboard shortcuts

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