xorm

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2024 License: BSD-3-Clause Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DEFAULT_LOG_PREFIX = "[xorm]"
	DEFAULT_LOG_FLAG   = log.Ldate | log.Lmicroseconds
	DEFAULT_LOG_LEVEL  = core.LOG_DEBUG
)

default log options

View Source
const (
	// Version show the xorm's version
	Version string = "0.8.0.1015"
)

Variables

View Source
var (
	// ErrParamsType params error
	ErrParamsType = errors.New("params type error")
	// ErrTableNotFound table not found error
	ErrTableNotFound = errors.New("table not found")
	// ErrUnSupportedType unsupported error
	ErrUnSupportedType = errors.New("unsupported type error")
	// ErrNotExist record does not exist error
	ErrNotExist = errors.New("record does not exist")
	// ErrCacheFailed cache failed error
	ErrCacheFailed = errors.New("cache failed")
	// ErrNeedDeletedCond delete needs less one condition error
	ErrNeedDeletedCond = errors.New("delete action needs at least one condition")
	// ErrNotImplemented not implemented
	ErrNotImplemented = errors.New("not implemented")
	// ErrConditionType condition type unsupported
	ErrConditionType = errors.New("unsupported condition type")
	// ErrUnSupportedSQLType parameter of SQL is not supported
	ErrUnSupportedSQLType = errors.New("unsupported sql type")
)
View Source
var (

	// DefaultPostgresSchema default postgres schema
	DefaultPostgresSchema = "public"
)

from http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html

View Source
var ErrNoElementsOnSlice = errors.New("no element on slice when insert")

ErrNoElementsOnSlice represents an error there is no element when insert

Functions

func AutoIncrTagHandler

func AutoIncrTagHandler(ctx *tagContext) error

AutoIncrTagHandler describes autoincr tag handler

func CommentTagHandler

func CommentTagHandler(ctx *tagContext) error

CommentTagHandler add comment to column

func CreatedTagHandler

func CreatedTagHandler(ctx *tagContext) error

CreatedTagHandler describes created tag handler

func DefaultTagHandler

func DefaultTagHandler(ctx *tagContext) error

DefaultTagHandler describes default tag handler

func DeletedTagHandler

func DeletedTagHandler(ctx *tagContext) error

DeletedTagHandler describes deleted tag handler

func ExtendsTagHandler

func ExtendsTagHandler(ctx *tagContext) error

ExtendsTagHandler describes extends tag handler

func IgnoreTagHandler

func IgnoreTagHandler(ctx *tagContext) error

IgnoreTagHandler describes ignored tag handler

func IndexTagHandler

func IndexTagHandler(ctx *tagContext) error

IndexTagHandler describes index tag handler

func LocalTagHandler

func LocalTagHandler(ctx *tagContext) error

LocalTagHandler describes local tag handler

func NULLTagHandler

func NULLTagHandler(ctx *tagContext) error

NULLTagHandler describes null tag handler

func NotNullTagHandler

func NotNullTagHandler(ctx *tagContext) error

NotNullTagHandler describes notnull tag handler

func OnlyFromDBTagHandler

func OnlyFromDBTagHandler(ctx *tagContext) error

OnlyFromDBTagHandler describes mapping direction tag handler

func OnlyToDBTagHandler

func OnlyToDBTagHandler(ctx *tagContext) error

OnlyToDBTagHandler describes mapping direction tag handler

func PKTagHandler

func PKTagHandler(ctx *tagContext) error

PKTagHandler describes primary key tag handler

func SQLTypeTagHandler

func SQLTypeTagHandler(ctx *tagContext) error

SQLTypeTagHandler describes SQL Type tag handler

func UTCTagHandler

func UTCTagHandler(ctx *tagContext) error

UTCTagHandler describes utc tag handler

func UniqueTagHandler

func UniqueTagHandler(ctx *tagContext) error

UniqueTagHandler describes unique tag handler

func UpdatedTagHandler

func UpdatedTagHandler(ctx *tagContext) error

UpdatedTagHandler describes updated tag handler

func VersionTagHandler

func VersionTagHandler(ctx *tagContext) error

VersionTagHandler describes version tag handler

Types

type AfterDeleteProcessor

type AfterDeleteProcessor interface {
	AfterDelete()
}

AfterDeleteProcessor executed after an object has been deleted

type AfterInsertProcessor

type AfterInsertProcessor interface {
	AfterInsert()
}

AfterInsertProcessor executed after an object is persisted to the database

type AfterLoadProcessor

type AfterLoadProcessor interface {
	AfterLoad()
}

AfterLoadProcessor executed after an ojbect has been loaded from database

type AfterLoadSessionProcessor

type AfterLoadSessionProcessor interface {
	AfterLoad(*Session)
}

AfterLoadSessionProcessor executed after an ojbect has been loaded from database with session parameter

type AfterSetProcessor

type AfterSetProcessor interface {
	AfterSet(string, Cell)
}

AfterSetProcessor executed after data set to the struct fields

type AfterUpdateProcessor

type AfterUpdateProcessor interface {
	AfterUpdate()
}

AfterUpdateProcessor executed after an object has been updated

type BeforeDeleteProcessor

type BeforeDeleteProcessor interface {
	BeforeDelete()
}

BeforeDeleteProcessor executed before an object is deleted

type BeforeInsertProcessor

type BeforeInsertProcessor interface {
	BeforeInsert()
}

BeforeInsertProcessor executed before an object is initially persisted to the database

type BeforeSetProcessor

type BeforeSetProcessor interface {
	BeforeSet(string, Cell)
}

BeforeSetProcessor executed before data set to the struct fields

type BeforeUpdateProcessor

type BeforeUpdateProcessor interface {
	BeforeUpdate()
}

BeforeUpdateProcessor executed before an object is updated

type Cell

type Cell *any

Cell cell is a result of one column field

type DiscardLogger

type DiscardLogger struct{}

DiscardLogger don't log implementation for core.ILogger

func (DiscardLogger) Debug

func (DiscardLogger) Debug(v ...any)

Debug empty implementation

func (DiscardLogger) Debugf

func (DiscardLogger) Debugf(format string, v ...any)

Debugf empty implementation

func (DiscardLogger) Error

func (DiscardLogger) Error(v ...any)

Error empty implementation

func (DiscardLogger) Errorf

func (DiscardLogger) Errorf(format string, v ...any)

Errorf empty implementation

func (DiscardLogger) Info

func (DiscardLogger) Info(v ...any)

Info empty implementation

func (DiscardLogger) Infof

func (DiscardLogger) Infof(format string, v ...any)

Infof empty implementation

func (DiscardLogger) IsShowSQL

func (DiscardLogger) IsShowSQL() bool

IsShowSQL empty implementation

func (DiscardLogger) Level

func (DiscardLogger) Level() core.LogLevel

Level empty implementation

func (DiscardLogger) SetLevel

func (DiscardLogger) SetLevel(l core.LogLevel)

SetLevel empty implementation

func (DiscardLogger) ShowSQL

func (DiscardLogger) ShowSQL(show ...bool)

ShowSQL empty implementation

func (DiscardLogger) Warn

func (DiscardLogger) Warn(v ...any)

Warn empty implementation

func (DiscardLogger) Warnf

func (DiscardLogger) Warnf(format string, v ...any)

Warnf empty implementation

type Engine

type Engine struct {
	ColumnMapper  core.IMapper
	TableMapper   core.IMapper
	TagIdentifier string
	Tables        map[reflect.Type]*core.Table

	Cacher core.Cacher

	TZLocation *time.Location // The timezone of the application
	DatabaseTZ *time.Location // The timezone of the database
	// contains filtered or unexported fields
}

Engine is the major struct of xorm, it means a database manager. Commonly, an application only need one engine

func NewEngine

func NewEngine(driverName string, dataSourceName string) (*Engine, error)

NewEngine new a db manager according to the parameter. Currently support four drivers

func (*Engine) After

func (engine *Engine) After(closures func(any)) *Session

After apply after insert Processor, affected bean is passed to closure arg

func (*Engine) Before

func (engine *Engine) Before(closures func(any)) *Session

Before apply before Processor, affected bean is passed to closure arg

func (*Engine) Charset

func (engine *Engine) Charset(charset string) *Session

Charset set charset when create table, only support mysql now

func (*Engine) Close

func (engine *Engine) Close() error

Close the engine

func (*Engine) CondDeleted

func (engine *Engine) CondDeleted(col *core.Column) builder.Cond

CondDeleted returns the conditions whether a record is soft deleted.

func (*Engine) DB

func (engine *Engine) DB() *core.DB

DB return the wrapper of sql.DB

func (*Engine) DBMetas

func (engine *Engine) DBMetas() ([]*core.Table, error)

DBMetas Retrieve all tables, columns, indexes' informations from database.

func (*Engine) DataSourceName

func (engine *Engine) DataSourceName() string

DataSourceName return the current connection string

func (*Engine) Dialect

func (engine *Engine) Dialect() core.Dialect

Dialect return database dialect

func (*Engine) DriverName

func (engine *Engine) DriverName() string

DriverName return the current sql driver's name

func (*Engine) Exec

func (engine *Engine) Exec(sqlOrArgs ...any) (sql.Result, error)

Exec raw sql

func (*Engine) Find

func (engine *Engine) Find(beans any, condiBeans ...any) error

Find retrieve records from table, condiBeans's non-empty fields are conditions. beans could be []Struct, []*Struct, map[int64]Struct map[int64]*Struct

func (*Engine) GobRegister

func (engine *Engine) GobRegister(v any) *Engine

GobRegister register one struct to gob for cache use

func (*Engine) ID

func (engine *Engine) ID(id any) *Session

ID method provoide a condition as (id) = ?

func (*Engine) Insert

func (engine *Engine) Insert(beans ...any) (int64, error)

Insert one or more records

func (*Engine) IsTableExist

func (engine *Engine) IsTableExist(beanOrTableName any) (bool, error)

IsTableExist if a table is exist

func (*Engine) NewDB

func (engine *Engine) NewDB() (*core.DB, error)

NewDB provides an interface to operate database directly

func (*Engine) NewSession

func (engine *Engine) NewSession() *Session

NewSession New a session

func (*Engine) NoAutoTime

func (engine *Engine) NoAutoTime() *Session

NoAutoTime Default if your struct has "created" or "updated" filed tag, the fields will automatically be filled with current time when Insert or Update invoked. Call NoAutoTime if you dont' want to fill automatically.

func (*Engine) Ping

func (engine *Engine) Ping() error

Ping tests if database is alive

func (*Engine) Quote

func (engine *Engine) Quote(value string) string

Quote Use QuoteStr quote the string sql

func (*Engine) QuoteTo

func (engine *Engine) QuoteTo(buf *strings.Builder, value string)

QuoteTo quotes string and writes into the buffer

func (*Engine) SQL

func (engine *Engine) SQL(query any, args ...any) *Session

SQL method let's you manually write raw SQL and operate For example:

engine.SQL("select * from user").Find(&users)

This code will execute "select * from user" and set the records to users

func (*Engine) SetColumnMapper

func (engine *Engine) SetColumnMapper(mapper core.IMapper)

SetColumnMapper set the column name mapping rule

func (*Engine) SetConnMaxLifetime

func (engine *Engine) SetConnMaxLifetime(d time.Duration)

SetConnMaxLifetime sets the maximum amount of time a connection may be reused.

func (*Engine) SetLogger

func (engine *Engine) SetLogger(logger core.ILogger)

SetLogger set the new logger

func (*Engine) SetMapper

func (engine *Engine) SetMapper(mapper core.IMapper)

SetMapper set the name mapping rules

func (*Engine) SetMaxIdleConns

func (engine *Engine) SetMaxIdleConns(conns int)

SetMaxIdleConns set the max idle connections on pool, default is 2

func (*Engine) SetMaxOpenConns

func (engine *Engine) SetMaxOpenConns(conns int)

SetMaxOpenConns is only available for go 1.2+

func (*Engine) SetTableMapper

func (engine *Engine) SetTableMapper(mapper core.IMapper)

SetTableMapper set the table name mapping rule

func (*Engine) ShowExecTime

func (engine *Engine) ShowExecTime(show ...bool)

ShowExecTime show SQL statement and execute time or not on logger if log level is great than INFO

func (*Engine) ShowSQL

func (engine *Engine) ShowSQL(show ...bool)

ShowSQL show SQL statement or not on logger if log level is great than INFO

func (*Engine) StoreEngine

func (engine *Engine) StoreEngine(storeEngine string) *Session

StoreEngine set store engine when create table, only support mysql now

func (*Engine) SupportInsertMany

func (engine *Engine) SupportInsertMany() bool

SupportInsertMany If engine's database support batch insert records like "insert into user values (name, age), (name, age)". When the return is ture, then engine.Insert(&users) will generate batch sql and exeute.

func (*Engine) Sync

func (engine *Engine) Sync(beans ...any) error

Sync the new struct changes to database, this method will automatically add table, column, index, unique. but will not delete or change anything. If you change some field, you should change the database manually.

func (*Engine) Sync2

func (engine *Engine) Sync2(beans ...any) error

Sync2 synchronize structs to database tables

func (*Engine) Table

func (engine *Engine) Table(tableNameOrBean any) *Session

Table temporarily change the Get, Find, Update's table

func (*Engine) TableName

func (engine *Engine) TableName(bean any, includeSchema ...bool) string

TableName returns table name with schema prefix if has

func (*Engine) Where

func (engine *Engine) Where(query any, args ...any) *Session

Where method provide a condition query

type ErrFieldIsNotExist

type ErrFieldIsNotExist struct {
	FieldName string
	TableName string
}

ErrFieldIsNotExist columns does not exist

func (ErrFieldIsNotExist) Error

func (e ErrFieldIsNotExist) Error() string

type ErrFieldIsNotValid

type ErrFieldIsNotValid struct {
	FieldName string
	TableName string
}

ErrFieldIsNotValid is not valid

func (ErrFieldIsNotValid) Error

func (e ErrFieldIsNotValid) Error() string

type ErrUnsupportedExprType

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

func (ErrUnsupportedExprType) Error

func (err ErrUnsupportedExprType) Error() string

type IterFunc

type IterFunc func(idx int, bean interface{}) error

IterFunc only use by Iterate

type JSONInterface

type JSONInterface interface {
	Marshal(v any) ([]byte, error)
	Unmarshal(data []byte, v any) error
}

JSONInterface represents an interface to handle json data

var (
	// DefaultJSONHandler default json handler
	DefaultJSONHandler JSONInterface = StdJSON{}
)

type Rows

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

Rows rows wrapper a rows to

func (*Rows) Close

func (rows *Rows) Close() error

Close session if session.IsAutoClose is true, and claimed any opened resources

func (*Rows) Err

func (rows *Rows) Err() error

Err returns the error, if any, that was encountered during iteration. Err may be called after an explicit or implicit Close.

func (*Rows) Next

func (rows *Rows) Next() bool

Next move cursor to next record, return false if end has reached

func (*Rows) Scan

func (rows *Rows) Scan(bean any) error

Scan row record to bean properties

type Session

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

Session keep a pointer to sql.DB and provides all execution of all kind of database operations.

func (*Session) After

func (session *Session) After(closures func(any)) *Session

After Apply after Processor, affected bean is passed to closure arg

func (*Session) Alias

func (session *Session) Alias(alias string) *Session

Alias set the table alias

func (*Session) AllCols

func (session *Session) AllCols() *Session

AllCols ask all columns

func (*Session) And

func (session *Session) And(query any, args ...any) *Session

And provides custom query condition.

func (*Session) Asc

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

Asc provide asc order by query condition, the input parameters are columns.

func (*Session) Before

func (session *Session) Before(closures func(any)) *Session

Before Apply before Processor, affected bean is passed to closure arg

func (*Session) Begin

func (session *Session) Begin() error

Begin a transaction

func (*Session) BufferSize

func (session *Session) BufferSize(size int) *Session

BufferSize sets the buffersize for iterate

func (*Session) Charset

func (session *Session) Charset(charset string) *Session

Charset is only avialble mysql dialect currently

func (*Session) Close

func (session *Session) Close()

Close release the connection from pool

func (*Session) Cols

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

Cols provides some columns to special

func (*Session) Commit

func (session *Session) Commit() error

Commit When using transaction, Commit will commit all operations.

func (*Session) Conds

func (session *Session) Conds() builder.Cond

Conds returns session query conditions except auto bean conditions

func (*Session) Context

func (session *Session) Context(ctx context.Context) *Session

Context sets the context on this session

func (*Session) Count

func (session *Session) Count(bean ...interface{}) (int64, error)

Count counts the records. bean's non-empty fields are conditions.

func (*Session) CreateIndexes

func (session *Session) CreateIndexes(bean any) error

CreateIndexes create indexes

func (*Session) CreateTable

func (session *Session) CreateTable(bean any) error

CreateTable create a table according a bean

func (*Session) CreateUniques

func (session *Session) CreateUniques(bean any) error

CreateUniques create uniques

func (*Session) DB

func (session *Session) DB() *core.DB

DB db return the wrapper of sql.DB

func (*Session) Delete

func (session *Session) Delete(bean any) (int64, error)

Delete records, bean's non-empty fields are conditions

func (*Session) Desc

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

Desc provide desc order by query condition, the input parameters are columns.

func (*Session) Distinct

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

Distinct use for distinct columns. Caution: when you are using cache, distinct will not be cached because cache system need id, but distinct will not provide id

func (*Session) DropIndexes

func (session *Session) DropIndexes(bean any) error

DropIndexes drop indexes

func (*Session) DropTable

func (session *Session) DropTable(beanOrTableName any) error

DropTable drop table will drop table if exist, if drop failed, it will return error

func (*Session) Exec

func (session *Session) Exec(sqlOrArgs ...any) (sql.Result, error)

Exec raw sql

func (*Session) Exist

func (session *Session) Exist(bean ...any) (bool, error)

Exist returns true if the record exist otherwise return false

func (*Session) Find

func (session *Session) Find(rowsSlicePtr any, condiBean ...any) error

Find retrieve records from table, condiBeans's non-empty fields are conditions. beans could be []Struct, []*Struct, map[int64]Struct map[int64]*Struct

func (*Session) FindAndCount

func (session *Session) FindAndCount(rowsSlicePtr any, condiBean ...any) (int64, error)

FindAndCount find the results and also return the counts

func (*Session) ForUpdate

func (session *Session) ForUpdate() *Session

ForUpdate Set Read/Write locking for UPDATE

func (*Session) Get

func (session *Session) Get(bean any) (bool, error)

Get retrieve one record from database, bean's non-empty fields will be as conditions

func (*Session) GroupBy

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

GroupBy Generate Group By statement

func (*Session) Having

func (session *Session) Having(conditions string) *Session

Having Generate Having statement

func (*Session) ID

func (session *Session) ID(id any) *Session

ID provides converting id as a query condition

func (*Session) Id deprecated

func (session *Session) Id(id any) *Session

Id provides converting id as a query condition

Deprecated: use ID instead

func (*Session) In

func (session *Session) In(column string, args ...any) *Session

In provides a query string like "id in (1, 2, 3)"

func (*Session) Init

func (session *Session) Init()

Init reset the session as the init status.

func (*Session) Insert

func (session *Session) Insert(beans ...any) (int64, error)

Insert insert one or more beans

func (*Session) InsertMulti

func (session *Session) InsertMulti(rowsSlicePtr any) (int64, error)

InsertMulti insert multiple records

func (*Session) InsertOne

func (session *Session) InsertOne(bean any) (int64, error)

InsertOne insert only one struct into database as a record. The in parameter bean must a struct or a point to struct. The return parameter is inserted and error

func (*Session) IsClosed

func (session *Session) IsClosed() bool

IsClosed returns if session is closed

func (*Session) IsTableEmpty

func (session *Session) IsTableEmpty(bean any) (bool, error)

IsTableEmpty if table have any records

func (*Session) IsTableExist

func (session *Session) IsTableExist(beanOrTableName any) (bool, error)

IsTableExist if a table is exist

func (*Session) Iterate

func (session *Session) Iterate(bean interface{}, fun IterFunc) error

Iterate record by record handle records from table, condiBeans's non-empty fields are conditions. beans could be []Struct, []*Struct, map[int64]Struct map[int64]*Struct

func (*Session) Join

func (session *Session) Join(joinOperator string, tablename any, condition string, args ...any) *Session

Join join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN

func (*Session) LastSQL

func (session *Session) LastSQL() (string, []any)

LastSQL returns last query information

func (*Session) Limit

func (session *Session) Limit(limit int, start ...int) *Session

Limit provide limit and offset query condition

func (*Session) MustCols

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

MustCols specify some columns must use even if they are empty

func (*Session) MustLogSQL

func (session *Session) MustLogSQL(log ...bool) *Session

MustLogSQL means record SQL or not and don't follow engine's setting

func (*Session) NoAutoCondition

func (session *Session) NoAutoCondition(no ...bool) *Session

NoAutoCondition disable generate SQL condition from beans

func (*Session) NoAutoTime

func (session *Session) NoAutoTime() *Session

NoAutoTime means do not automatically give created field and updated field the current time on the current session temporarily

func (*Session) NoCache

func (session *Session) NoCache() *Session

NoCache ask this session do not retrieve data from cache system and get data from database directly.

func (*Session) NotIn

func (session *Session) NotIn(column string, args ...any) *Session

NotIn provides a query string like "id in (1, 2, 3)"

func (*Session) Nullable

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

Nullable Set null when column is zero-value and nullable for update

func (*Session) Omit

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

AllCols ask all columns

func (*Session) Or

func (session *Session) Or(query any, args ...any) *Session

Or provides custom query condition.

func (*Session) OrderBy

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

OrderBy provide order by query condition, the input parameter is the content after order by on a sql statement.

func (*Session) Ping

func (session *Session) Ping() error

Ping test if database is ok

func (*Session) PingContext

func (session *Session) PingContext(ctx context.Context) error

PingContext test if database is ok

func (*Session) Prepare

func (session *Session) Prepare() *Session

Prepare set a flag to session that should be prepare statement before execute query

func (*Session) Query

func (session *Session) Query(sqlOrArgs ...interface{}) ([]map[string][]byte, error)

Query runs a raw sql and return records as []map[string][]byte

func (*Session) QueryInterface

func (session *Session) QueryInterface(sqlOrArgs ...interface{}) ([]map[string]interface{}, error)

QueryInterface runs a raw sql and return records as []map[string]interface{}

func (*Session) QuerySliceString

func (session *Session) QuerySliceString(sqlOrArgs ...interface{}) ([][]string, error)

QuerySliceString runs a raw sql and return records as [][]string

func (*Session) QueryString

func (session *Session) QueryString(sqlOrArgs ...interface{}) ([]map[string]string, error)

QueryString runs a raw sql and return records as []map[string]string

func (*Session) Rollback

func (session *Session) Rollback() error

Rollback When using transaction, you can rollback if any error

func (*Session) Rows

func (session *Session) Rows(bean interface{}) (*Rows, error)

Rows return sql.Rows compatible Rows obj, as a forward Iterator object for iterating record by record, bean's non-empty fields are conditions.

func (*Session) SQL

func (session *Session) SQL(query any, args ...any) *Session

SQL provides raw sql input parameter. When you have a complex SQL statement and cannot use Where, Id, In and etc. Methods to describe, you can use SQL.

func (*Session) Select

func (session *Session) Select(str string) *Session

Select provides some columns to special

func (*Session) Sql deprecated

func (session *Session) Sql(query string, args ...any) *Session

Sql provides raw sql input parameter. When you have a complex SQL statement and cannot use Where, Id, In and etc. Methods to describe, you can use SQL.

Deprecated: use SQL instead.

func (*Session) StoreEngine

func (session *Session) StoreEngine(storeEngine string) *Session

StoreEngine is only avialble mysql dialect currently

func (*Session) Sum

func (session *Session) Sum(bean interface{}, columnName string) (res float64, err error)

Sum call sum some column. bean's non-empty fields are conditions.

func (*Session) SumInt

func (session *Session) SumInt(bean interface{}, columnName string) (res int64, err error)

SumInt call sum some column. bean's non-empty fields are conditions.

func (*Session) Sums

func (session *Session) Sums(bean interface{}, columnNames ...string) ([]float64, error)

Sums call sum some columns. bean's non-empty fields are conditions.

func (*Session) SumsInt

func (session *Session) SumsInt(bean interface{}, columnNames ...string) ([]int64, error)

SumsInt sum specify columns and return as []int64 instead of []float64

func (*Session) Sync2

func (session *Session) Sync2(beans ...any) error

Sync2 synchronize structs to database tables

func (*Session) Table

func (session *Session) Table(tableNameOrBean any) *Session

Table can input a string or pointer to struct for special a table to operate.

func (*Session) Unscoped

func (session *Session) Unscoped() *Session

Unscoped always disable struct tag "deleted"

func (*Session) Update

func (session *Session) Update(bean any, condiBean ...any) (int64, error)

Update records, bean's non-empty fields are updated contents, condiBean' non-empty filds are conditions CAUTION:

1.bool will defaultly be updated content nor conditions
 You should call UseBool if you have bool to use.
2.float32 & float64 may be not inexact as conditions

func (*Session) UseBool

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

UseBool automatically retrieve condition according struct, but if struct has bool field, it will ignore them. So use UseBool to tell system to do not ignore them. If no parameters, it will use all the bool field of struct, or it will use parameters's columns

func (*Session) Where

func (session *Session) Where(query any, args ...any) *Session

Where provides custom query condition.

type SimpleLogger

type SimpleLogger struct {
	DEBUG *log.Logger
	ERR   *log.Logger
	INFO  *log.Logger
	WARN  *log.Logger
	// contains filtered or unexported fields
}

SimpleLogger is the default implment of core.ILogger

func NewSimpleLogger

func NewSimpleLogger(out io.Writer) *SimpleLogger

NewSimpleLogger use a special io.Writer as logger output

func (*SimpleLogger) Debug

func (s *SimpleLogger) Debug(v ...any)

Debug implement core.ILogger

func (*SimpleLogger) Debugf

func (s *SimpleLogger) Debugf(format string, v ...any)

Debugf implement core.ILogger

func (*SimpleLogger) Error

func (s *SimpleLogger) Error(v ...any)

Error implement core.ILogger

func (*SimpleLogger) Errorf

func (s *SimpleLogger) Errorf(format string, v ...any)

Errorf implement core.ILogger

func (*SimpleLogger) Info

func (s *SimpleLogger) Info(v ...any)

Info implement core.ILogger

func (*SimpleLogger) Infof

func (s *SimpleLogger) Infof(format string, v ...any)

Infof implement core.ILogger

func (*SimpleLogger) IsShowSQL

func (s *SimpleLogger) IsShowSQL() bool

IsShowSQL implement core.ILogger

func (*SimpleLogger) Level

func (s *SimpleLogger) Level() core.LogLevel

Level implement core.ILogger

func (*SimpleLogger) SetLevel

func (s *SimpleLogger) SetLevel(l core.LogLevel)

SetLevel implement core.ILogger

func (*SimpleLogger) ShowSQL

func (s *SimpleLogger) ShowSQL(show ...bool)

ShowSQL implement core.ILogger

func (*SimpleLogger) Warn

func (s *SimpleLogger) Warn(v ...any)

Warn implement core.ILogger

func (*SimpleLogger) Warnf

func (s *SimpleLogger) Warnf(format string, v ...any)

Warnf implement core.ILogger

type Statement

type Statement struct {
	RefTable *core.Table
	Engine   *Engine
	Start    int
	LimitN   *int

	OrderStr string
	JoinStr  string

	GroupByStr string
	HavingStr  string
	ColumnStr  string

	OmitStr      string
	AltTableName string

	RawSQL      string
	RawParams   []any
	UseAutoJoin bool
	StoreEngine string
	Charset     string
	UseCache    bool
	UseAutoTime bool

	IsDistinct  bool
	IsForUpdate bool
	TableAlias  string
	// contains filtered or unexported fields
}

Statement save all the sql info for executing SQL

func (*Statement) Alias

func (statement *Statement) Alias(alias string) *Statement

Alias set the table alias

func (*Statement) AllCols

func (statement *Statement) AllCols() *Statement

AllCols update use only: update all columns

func (*Statement) And

func (statement *Statement) And(query any, args ...any) *Statement

And add Where & and statement

func (*Statement) Asc

func (statement *Statement) Asc(colNames ...string) *Statement

Asc provide asc order by query condition, the input parameters are columns.

func (*Statement) Cols

func (statement *Statement) Cols(columns ...string) *Statement

Cols generate "col1, col2" statement

func (*Statement) Decr

func (statement *Statement) Decr(column string, arg ...any) *Statement

Decr Generate "Update ... Set column = column - arg" statement

func (*Statement) Desc

func (statement *Statement) Desc(colNames ...string) *Statement

Desc generate `ORDER BY xx DESC`

func (*Statement) Distinct

func (statement *Statement) Distinct(columns ...string) *Statement

Distinct generates "DISTINCT col1, col2 " statement

func (*Statement) ForUpdate

func (statement *Statement) ForUpdate() *Statement

ForUpdate generates "SELECT ... FOR UPDATE" statement

func (*Statement) GroupBy

func (statement *Statement) GroupBy(keys string) *Statement

GroupBy generate "Group By keys" statement

func (*Statement) Having

func (statement *Statement) Having(conditions string) *Statement

Having generate "Having conditions" statement

func (*Statement) ID

func (statement *Statement) ID(id any) *Statement

ID generate "where id = ? " statement or for composite key "where key1 = ? and key2 = ?"

func (*Statement) In

func (statement *Statement) In(column string, args ...any) *Statement

In generate "Where column IN (?) " statement

func (*Statement) Incr

func (statement *Statement) Incr(column string, arg ...any) *Statement

Incr Generate "Update ... Set column = column + arg" statement

func (*Statement) Init

func (statement *Statement) Init()

Init reset all the statement's fields

func (*Statement) Join

func (statement *Statement) Join(joinOP string, tablename any, condition string, args ...any) *Statement

Join The joinOP should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN

func (*Statement) Limit

func (statement *Statement) Limit(limit int, start ...int) *Statement

Limit generate LIMIT start, limit statement

func (*Statement) MustCols

func (statement *Statement) MustCols(columns ...string) *Statement

MustCols update use only: must update columns

func (*Statement) NoAutoCondition

func (statement *Statement) NoAutoCondition(no ...bool) *Statement

NoAutoCondition if you do not want convert bean's field as query condition, then use this function

func (*Statement) NotIn

func (statement *Statement) NotIn(column string, args ...any) *Statement

NotIn generate "Where column NOT IN (?) " statement

func (*Statement) Nullable

func (statement *Statement) Nullable(columns ...string)

Nullable Update use only: update columns to null when value is nullable and zero-value

func (*Statement) Omit

func (statement *Statement) Omit(columns ...string)

Omit do not use the columns

func (*Statement) Or

func (statement *Statement) Or(query any, args ...any) *Statement

Or add Where & Or statement

func (*Statement) OrderBy

func (statement *Statement) OrderBy(order string) *Statement

OrderBy generate "Order By order" statement

func (*Statement) SQL

func (statement *Statement) SQL(query any, args ...any) *Statement

SQL adds raw sql statement

func (*Statement) Select

func (statement *Statement) Select(str string) *Statement

Select replace select

func (*Statement) SetExpr

func (statement *Statement) SetExpr(column string, expression any) *Statement

SetExpr Generate "Update ... Set column = {expression}" statement

func (*Statement) Table

func (statement *Statement) Table(tableNameOrBean any) *Statement

Table tempororily set table name, the parameter could be a string or a pointer of struct

func (*Statement) TableName

func (statement *Statement) TableName() string

TableName return current tableName

func (*Statement) Top

func (statement *Statement) Top(limit int) *Statement

Top generate LIMIT limit statement

func (*Statement) Unscoped

func (statement *Statement) Unscoped() *Statement

Unscoped always disable struct tag "deleted"

func (*Statement) UseBool

func (statement *Statement) UseBool(columns ...string) *Statement

UseBool indicates that use bool fields as update contents and query contiditions

func (*Statement) Where

func (statement *Statement) Where(query any, args ...any) *Statement

Where add Where statement

type StdJSON

type StdJSON struct{}

StdJSON implements JSONInterface via encoding/json

func (StdJSON) Marshal

func (StdJSON) Marshal(v any) ([]byte, error)

Marshal implements JSONInterface

func (StdJSON) Unmarshal

func (StdJSON) Unmarshal(data []byte, v any) error

Unmarshal implements JSONInterface

type SyslogLogger

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

SyslogLogger will be depricated

func NewSyslogLogger

func NewSyslogLogger(w *syslog.Writer) *SyslogLogger

NewSyslogLogger implements core.ILogger

func (*SyslogLogger) Debug

func (s *SyslogLogger) Debug(v ...any)

Debug log content as Debug

func (*SyslogLogger) Debugf

func (s *SyslogLogger) Debugf(format string, v ...any)

Debugf log content as Debug and format

func (*SyslogLogger) Error

func (s *SyslogLogger) Error(v ...any)

Error log content as Error

func (*SyslogLogger) Errorf

func (s *SyslogLogger) Errorf(format string, v ...any)

Errorf log content as Errorf and format

func (*SyslogLogger) Info

func (s *SyslogLogger) Info(v ...any)

Info log content as Info

func (*SyslogLogger) Infof

func (s *SyslogLogger) Infof(format string, v ...any)

Infof log content as Infof and format

func (*SyslogLogger) IsShowSQL

func (s *SyslogLogger) IsShowSQL() bool

IsShowSQL if logging SQL

func (*SyslogLogger) Level

func (s *SyslogLogger) Level() core.LogLevel

Level shows log level

func (*SyslogLogger) SetLevel

func (s *SyslogLogger) SetLevel(l core.LogLevel)

SetLevel always return error, as current log/syslog package doesn't allow to set priority level after syslog.Writer created

func (*SyslogLogger) ShowSQL

func (s *SyslogLogger) ShowSQL(show ...bool)

ShowSQL set if logging SQL

func (*SyslogLogger) Warn

func (s *SyslogLogger) Warn(v ...any)

Warn log content as Warn

func (*SyslogLogger) Warnf

func (s *SyslogLogger) Warnf(format string, v ...any)

Warnf log content as Warnf and format

type Table

type Table struct {
	*core.Table
	Name string
}

Table table struct

type TableName

type TableName interface {
	TableName() string
}

TableName table name interface to define customerize table name

Jump to

Keyboard shortcuts

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