orm

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 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("column should be string or ptr")
	ErrDestOfGetToMustBePtr             = errors.New("dest of Get-to must be ptr")
	ErrDestOfGetToSliceElemMustNotBePtr = errors.New("dest of Get-to slice elem kind must not be ptr")
	ErrDestOfGetToSliceElemMustBeStruct = errors.New("dest of Get-to slice elem kind must be struct")
)

Functions

func CreateStructFromTable added in v0.2.0

func CreateStructFromTable[T Table](queryTable Query[T]) error

func CreateTableFromStruct added in v0.2.0

func CreateTableFromStruct[T Table](query Query[T]) (string, error)

func FillDefaults added in v0.4.0

func FillDefaults(table Table)

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 (m Query[T]) Alias(alias string) Query[T]

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

func (m Query[T]) AllCols() string

func (Query[T]) DB

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

func (Query[T]) Delete

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

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

func (m Query[T]) Execute() QueryResult

excute raw

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

func (m Query[T]) ForUpdate(forUpdateType ...SelectForUpdateType) Query[T]

func (Query[T]) FromTable

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

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

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

get first T

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

func (m Query[T]) GetCount() (int64, QueryResult)

get count T

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

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

get first row

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

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

get slice row

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

func (m 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 (m Query[T]) Gets(primaryIds ...interface{}) ([]T, QueryResult)

get slice T

func (Query[T]) GroupBy

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

should not use group by after order by

func (Query[T]) Having

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

func (Query[T]) Insert

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

tableFieldPtrs: allow insert table columns

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

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

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

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

tableFieldPtrs: allow insert table columns

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

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

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

func (Query[T]) Join

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

func (Query[T]) LeftJoin

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

func (Query[T]) Limit

func (m Query[T]) Limit(limit int) Query[T]

func (Query[T]) Offset

func (m Query[T]) Offset(offset int) Query[T]

func (Query[T]) OrWhere

func (m 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 (m 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 (m Query[T]) OrWherePrimary(val ...interface{}) Query[T]

func (Query[T]) OrderBy

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

func (Query[T]) OrderByDesc

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

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

func (m 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 (m Query[T]) PartitionBy(column interface{}) Query[T]

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

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

func (Query[T]) RightJoin

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

func (Query[T]) Select

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

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

func (m 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 (m Query[T]) SelectOverRaw(windowFunc string, windowName string, alias string) Query[T]

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

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

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

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

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

func (m Query[T]) SubQuery() SubQuery

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

func (m Query[T]) TableInterface() Table

func (Query[T]) Transaction

func (m Query[T]) Transaction(q func(tx *sql.Tx) error) error

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

func (m Query[T]) Union(subquery SubQuery) Query[T]

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

func (m Query[T]) UnionAll(subquery SubQuery) Query[T]

func (Query[T]) Update

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

func (Query[T]) Updates

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

func (Query[T]) UseDB

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

func (Query[T]) UseTx

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

func (Query[T]) Where

func (m 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 (m 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 (m Query[T]) WherePrimary(val ...interface{}) Query[T]

where column(primary) = ? or column(primary) in (?)

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

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

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

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

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

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

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

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

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

func (m 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) 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 {
	TableName() string
	DatabaseName() 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