dal

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	QueryMode   = QueryMethod("query")
	ExecuteMode = QueryMethod("execute")
)

Variables

This section is empty.

Functions

func Count

func Count[T Model](ctx context.Context, conditions *Conditions) (num int64, err errors.CodeError)

func Database

func Database(ctx context.Context, database string) context.Context

func DefineSelectColumns

func DefineSelectColumns(ctx context.Context, columns ...string) context.Context

func DefinedSelectColumns

func DefinedSelectColumns(ctx context.Context) (columns []string, has bool)

func Delete

func Delete(ctx context.Context, model Model) (err errors.CodeError)

func EagerLoad

func EagerLoad(ctx context.Context) context.Context

func Exist

func Exist[T Model](ctx context.Context, conditions *Conditions) (has bool, err errors.CodeError)

func Insert

func Insert(ctx context.Context, model Model) (err errors.CodeError)

func InsertOrUpdate

func InsertOrUpdate(ctx context.Context, model Model) (err errors.CodeError)

func InsertWhenExist

func InsertWhenExist(ctx context.Context, model Model, source string) (err errors.CodeError)

func InsertWhenNotExist

func InsertWhenNotExist(ctx context.Context, model Model, source string) (err errors.CodeError)

func NotEagerLoad

func NotEagerLoad(ctx context.Context) context.Context

func Query

func Query[T Model](ctx context.Context, conditions *Conditions) (results []T, err errors.CodeError)

func QueryDirect

func QueryDirect[T Model](ctx context.Context, query string, args ...interface{}) (results []T, err errors.CodeError)

func QueryOne

func QueryOne[T Model](ctx context.Context, conditions *Conditions) (result T, err errors.CodeError)

func QueryTree

func QueryTree[T Model, N keyable](ctx context.Context, conditions *Conditions, orders *Orders, rng *Range, rootNodeValue N) (result T, err errors.CodeError)

func QueryTrees

func QueryTrees[T Model, N keyable](ctx context.Context, conditions *Conditions, orders *Orders, rng *Range, rootNodeValues ...N) (results map[N]T, err errors.CodeError)

func QueryWithRange

func QueryWithRange[T Model](ctx context.Context, conditions *Conditions, orders *Orders, rng *Range) (results []T, err errors.CodeError)

func RegisterDialectQueryGeneratorBuilder

func RegisterDialectQueryGeneratorBuilder(dialect Dialect, builder DialectQueryGeneratorBuilder)

func Update

func Update(ctx context.Context, model Model) (err errors.CodeError)

Types

type Condition

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

func Between

func Between(column string, left interface{}, right interface{}) *Condition

func BetweenDate

func BetweenDate(column string, dr *times.DateRange) *Condition

func BetweenTime

func BetweenTime(column string, tr *times.TimeRange) *Condition

func Eq

func Eq(column string, value interface{}) *Condition

func GT

func GT(column string, value interface{}) *Condition

func GTE

func GTE(column string, value interface{}) *Condition

func IN

func IN(column string, value interface{}) *Condition

func LT

func LT(column string, value interface{}) *Condition

func LTE

func LTE(column string, value interface{}) *Condition

func Like

func Like(column string, value string) *Condition

func LikeLeft

func LikeLeft(column string, value string) *Condition

func LikeRight

func LikeRight(column string, value string) *Condition

func NewCondition

func NewCondition(column string, operation string, arguments ...interface{}) *Condition

func NotEq

func NotEq(column string, value interface{}) *Condition

func NotIn

func NotIn(column string, value interface{}) *Condition

func (*Condition) Arguments

func (condition *Condition) Arguments() (arguments []interface{})

func (*Condition) Column

func (condition *Condition) Column() (column string)

func (*Condition) Operator

func (condition *Condition) Operator() (operator string)

type Conditions

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

func NewConditions

func NewConditions(cond *Condition) *Conditions

func (*Conditions) And

func (c *Conditions) And(v *Condition) *Conditions

func (*Conditions) AndConditions

func (c *Conditions) AndConditions(v *Conditions) *Conditions

func (*Conditions) Or

func (c *Conditions) Or(v *Condition) *Conditions

func (*Conditions) OrConditions

func (c *Conditions) OrConditions(v *Conditions) *Conditions

func (*Conditions) Unfold

func (c *Conditions) Unfold(head func(condition *Condition), nextCondition func(operator string, condition *Condition), nextConditions func(operator string, conditions *Conditions))

type Dialect

type Dialect string

type DialectQueryGeneratorBuilder

type DialectQueryGeneratorBuilder interface {
	Build(structure *ModelStructure) (generator QueryGenerator, err error)
}

type EagerLoader

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

func (*EagerLoader) AppendKey

func (el *EagerLoader) AppendKey(key interface{})

func (*EagerLoader) Load

func (el *EagerLoader) Load(ctx context.Context) (has bool, values map[interface{}]interface{}, err errors.CodeError)

type Field

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

func (*Field) Column

func (field *Field) Column() (column string)

func (*Field) Columns

func (field *Field) Columns() (columns []string)

func (*Field) Conflict

func (field *Field) Conflict() (ok bool)

func (*Field) HasColumns

func (field *Field) HasColumns() (has bool)

func (*Field) IsACB

func (field *Field) IsACB() (ok bool)

func (*Field) IsACT

func (field *Field) IsACT() (ok bool)

func (*Field) IsADB

func (field *Field) IsADB() (ok bool)

func (*Field) IsADT

func (field *Field) IsADT() (ok bool)

func (*Field) IsAMB

func (field *Field) IsAMB() (ok bool)

func (*Field) IsAMT

func (field *Field) IsAMT() (ok bool)

func (*Field) IsAOL

func (field *Field) IsAOL() (ok bool)

func (*Field) IsIncrPk

func (field *Field) IsIncrPk() (ok bool)

func (*Field) IsJson

func (field *Field) IsJson() (ok bool)
func (field *Field) IsLink() (ok bool)

func (*Field) IsNormal

func (field *Field) IsNormal() (ok bool)

func (*Field) IsPk

func (field *Field) IsPk() (ok bool)

func (*Field) IsReference

func (field *Field) IsReference() (ok bool)

func (*Field) IsTreeType

func (field *Field) IsTreeType() (ok bool)

func (*Field) IsVirtual

func (field *Field) IsVirtual() (ok bool)
func (field *Field) Link() (link *LinkField)

func (*Field) Model

func (field *Field) Model() (model *ModelStructure)

func (*Field) Name

func (field *Field) Name() (name string)

func (*Field) Reference

func (field *Field) Reference() (reference *ReferenceField)

func (*Field) Tree

func (field *Field) Tree() (tree *TreeNodeField)

func (*Field) Virtual

func (field *Field) Virtual() (virtual *VirtualField)

type LinkField

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

func (*LinkField) Abstracted

func (l *LinkField) Abstracted() (ok bool)

func (*LinkField) Arrayed

func (l *LinkField) Arrayed() (ok bool)

func (*LinkField) Name

func (l *LinkField) Name() (name string)

func (*LinkField) Target

func (l *LinkField) Target() (targetModel *ModelStructure, columns []string, orders *Orders, rng *Range)

type Model

type Model interface {
	TableName() (schema string, name string)
}

Model @title 数据表模型 @description 数据表模型

type ModelLoadHook

type ModelLoadHook interface {
	AfterLoaded(ctx context.Context) (err errors.CodeError)
}

type ModelStructure

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

func StructureOfModel

func StructureOfModel(model Model) (structure *ModelStructure, err error)

func (*ModelStructure) AuditFields

func (structure *ModelStructure) AuditFields() (createBY *Field, createAT *Field, modifyBY *Field, modifyAT *Field, deleteBY *Field, deleteAT *Field, version *Field, has bool)

func (*ModelStructure) Copy

func (structure *ModelStructure) Copy() (v *ModelStructure)

func (*ModelStructure) DialectQueryGenerator

func (structure *ModelStructure) DialectQueryGenerator(dialect Dialect) (queryGenerator QueryGenerator, err error)

func (*ModelStructure) Fields

func (structure *ModelStructure) Fields() (fields []*Field)

func (*ModelStructure) FindFieldByColumn

func (structure *ModelStructure) FindFieldByColumn(column string) (field *Field, has bool)

func (*ModelStructure) IncrPk

func (structure *ModelStructure) IncrPk() (v *Field, has bool)

func (*ModelStructure) Name

func (structure *ModelStructure) Name() (schema string, name string)

func (*ModelStructure) Pk

func (structure *ModelStructure) Pk() (fields []*Field, has bool)

func (*ModelStructure) Type

func (structure *ModelStructure) Type() (typ reflect.Type)

type ModelStructureReferencePath

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

type Order

type Order struct {
	Column string
	Desc   bool
}

func Asc

func Asc(column string) *Order

func Desc

func Desc(column string) *Order

type Orders

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

func NewOrders

func NewOrders() *Orders

func (*Orders) Asc

func (o *Orders) Asc(column string) *Orders

func (*Orders) Desc

func (o *Orders) Desc(column string) *Orders

func (*Orders) Unfold

func (o *Orders) Unfold(next func(order *Order))

type PageRequest

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

func NewPageRequest

func NewPageRequest(no int, size int) *PageRequest

func (*PageRequest) MapToRange

func (p *PageRequest) MapToRange() (rng *Range)

func (*PageRequest) Value

func (p *PageRequest) Value() (no int, size int)

type Pager

type Pager[T any] struct {
	No    int64 `json:"no"`
	Num   int64 `json:"num"`
	Total int64 `json:"total"`
	Items []T   `json:"items"`
}

func Page

func Page[T Model](ctx context.Context, conditions *Conditions, orders *Orders, page *PageRequest) (result *Pager[T], err errors.CodeError)

type QueryGenerator

type QueryGenerator interface {
	Insert(ctx context.Context, model Model) (method QueryMethod, query string, arguments []interface{}, err error)
	InsertOrUpdate(ctx context.Context, model Model) (method QueryMethod, query string, arguments []interface{}, err error)
	InsertWhenExist(ctx context.Context, model Model, source string) (method QueryMethod, query string, arguments []interface{}, err error)
	InsertWhenNotExist(ctx context.Context, model Model, source string) (method QueryMethod, query string, arguments []interface{}, err error)
	Update(ctx context.Context, model Model) (method QueryMethod, query string, arguments []interface{}, err error)
	Delete(ctx context.Context, model Model) (method QueryMethod, query string, arguments []interface{}, err error)
	Exist(ctx context.Context, cond *Conditions) (method QueryMethod, query string, arguments []interface{}, err error)
	Count(ctx context.Context, cond *Conditions) (method QueryMethod, query string, arguments []interface{}, err error)
	Query(ctx context.Context, cond *Conditions, orders *Orders, rng *Range) (method QueryMethod, query string, arguments []interface{}, err error)
}

type QueryMethod

type QueryMethod string

type Range

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

func NewRange

func NewRange(offset int, limit int) *Range

func (*Range) MapToPageRequest

func (rng *Range) MapToPageRequest() (pager *PageRequest)

func (*Range) Value

func (rng *Range) Value() (offset int, limit int)

type ReferenceField

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

func (*ReferenceField) Abstracted

func (r *ReferenceField) Abstracted() (ok bool)

func (*ReferenceField) Name

func (r *ReferenceField) Name() (name string)

func (*ReferenceField) Target

func (r *ReferenceField) Target() (targetModel *ModelStructure, targetFields []*Field, columns []string)

type SubQueryArgument

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

func NewSubQueryArgument

func NewSubQueryArgument(model Model, column string, conditions *Conditions) *SubQueryArgument

func (*SubQueryArgument) GenerateQueryFragment

func (sub *SubQueryArgument) GenerateQueryFragment(ctx context.Context, dialect Dialect) (fragment string, arguments []interface{}, err error)

type TreeNodeField

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

func (*TreeNodeField) RefColumnName

func (t *TreeNodeField) RefColumnName() (node string, parent string)

type VirtualField

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

func (*VirtualField) Name

func (v *VirtualField) Name() (name string)

func (*VirtualField) Query

func (v *VirtualField) Query() (query string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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