Documentation ¶
Index ¶
- Constants
- Variables
- func BuildCaseInsensitiveIn(key string, values []string) builder.Cond
- func BuildCaseInsensitiveLike(key, value string) builder.Cond
- func BuilderDialect() string
- func Cell2Int64(val xorm.Cell) int64
- func ConvertUtf8ToUtf8mb4() error
- func ConvertVarcharToNVarchar() error
- func Count[T any](ctx context.Context, opts FindOptions, object T) (int64, error)
- func CountBadSequences(_ context.Context) (int64, error)
- func CountByBean(ctx context.Context, bean any) (int64, error)
- func CountOrphanedObjects(ctx context.Context, subject, refobject, joinCond string) (int64, error)
- func DecrByIDs(ctx context.Context, ids []int64, decrCol string, bean any) error
- func DeleteAllRecords(tableName string) error
- func DeleteBeans(ctx context.Context, beans ...any) (err error)
- func DeleteByBean(ctx context.Context, bean any) (int64, error)
- func DeleteByID(ctx context.Context, id int64, bean any) (int64, error)
- func DeleteOrphanedObjects(ctx context.Context, subject, refobject, joinCond string) error
- func DeleteResourceIndex(ctx context.Context, tableName string, groupID int64) error
- func DumpDatabase(filePath, dbType string) error
- func DumpTables(tables []*schemas.Table, w io.Writer, tp ...schemas.DBType) error
- func ErrCancelledf(format string, args ...any) error
- func Exec(ctx context.Context, sqlAndArgs ...any) (sql.Result, error)
- func Exist[T any](ctx context.Context, cond builder.Cond) (bool, error)
- func Find[T any](ctx context.Context, opts FindOptions, objects *[]T) error
- func FindAndCount[T any](ctx context.Context, opts FindOptions, objects *[]T) (int64, error)
- func FindIDs(ctx context.Context, tableName, idCol string, cond builder.Cond) ([]int64, error)
- func FixBadSequences(_ context.Context) error
- func GetByBean(ctx context.Context, bean any) (bool, error)
- func GetMaxID(beanOrTableName any) (maxID int64, err error)
- func GetNextResourceIndex(ctx context.Context, tableName string, groupID int64) (int64, error)
- func GetPaginatedSession(p Paginator) *xorm.Session
- func InTransaction(ctx context.Context) bool
- func InitEngine(ctx context.Context) error
- func InitEngineWithMigration(ctx context.Context, migrateFunc func(*xorm.Engine) error) (err error)
- func Insert(ctx context.Context, beans ...any) error
- func IsErrCancelled(err error) bool
- func IsErrConditionRequired(err error) bool
- func IsErrNameCharsNotAllowed(err error) bool
- func IsErrNamePatternNotAllowed(err error) bool
- func IsErrNameReserved(err error) bool
- func IsErrNotExist(err error) bool
- func IsErrSSHDisabled(err error) bool
- func IsTableNotEmpty(tableName string) (bool, error)
- func IsUsableName(names, patterns []string, name string) error
- func Iterate[Bean any](ctx context.Context, cond builder.Cond, ...) error
- func MaxBatchInsertSize(bean any) int
- func NamesToBean(names ...string) ([]any, error)
- func NewXORMLogger(showSQL bool) xormlog.Logger
- func RegisterModel(bean any, initFunc ...func() error)
- func SetDefaultEngine(ctx context.Context, eng *xorm.Engine)
- func SetLogSQL(ctx context.Context, on bool)
- func SetSessionPagination(sess Engine, p Paginator) *xorm.Session
- func SyncAllTables() error
- func SyncMaxResourceIndex(ctx context.Context, tableName string, groupID, maxIndex int64) (err error)
- func TableInfo(v any) (*schemas.Table, error)
- func TableName(bean any) string
- func TruncateBeans(ctx context.Context, beans ...any) (err error)
- func TxContext(parentCtx context.Context) (*Context, Committer, error)
- func UnsetDefaultEngine()
- func WithTx(parentCtx context.Context, f func(ctx context.Context) error) error
- type AbsoluteListOptions
- type Committer
- type Context
- type Engine
- type Engined
- type ErrCancelled
- type ErrConditionRequired
- type ErrNameCharsNotAllowed
- type ErrNamePatternNotAllowed
- type ErrNameReserved
- type ErrNotExist
- type ErrSSHDisabled
- type FindOptions
- type ListOptions
- type Paginator
- type ResourceIndex
- type SearchOrderBy
- type XORMLogBridge
- func (l *XORMLogBridge) Debug(v ...any)
- func (l *XORMLogBridge) Debugf(format string, v ...any)
- func (l *XORMLogBridge) Error(v ...any)
- func (l *XORMLogBridge) Errorf(format string, v ...any)
- func (l *XORMLogBridge) Info(v ...any)
- func (l *XORMLogBridge) Infof(format string, v ...any)
- func (l *XORMLogBridge) IsShowSQL() bool
- func (l *XORMLogBridge) Level() xormlog.LogLevel
- func (l *XORMLogBridge) Log(skip int, level log.Level, format string, v ...any)
- func (l *XORMLogBridge) SetLevel(lvl xormlog.LogLevel)
- func (l *XORMLogBridge) ShowSQL(show ...bool)
- func (l *XORMLogBridge) Warn(v ...any)
- func (l *XORMLogBridge) Warnf(format string, v ...any)
Constants ¶
const (
// DefaultMaxInSize represents default variables number on IN () in SQL
DefaultMaxInSize = 50
)
const ( // Which means a condition to filter the records which don't match any id. // It's different from zero which means the condition could be ignored. NoConditionID = -1 )
Variables ¶
var ( // ErrResouceOutdated represents an error when request resource outdated ErrResouceOutdated = errors.New("resource outdated") // ErrGetResourceIndexFailed represents an error when resource index retries 3 times ErrGetResourceIndexFailed = errors.New("get resource index failed") )
var ( // ErrNameEmpty name is empty error ErrNameEmpty = util.SilentWrap{Message: "name is empty", Err: util.ErrInvalidArgument} // AlphaDashDotPattern characters prohibited in a user name (anything except A-Za-z0-9_.-) AlphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`) )
var DefaultContext context.Context
DefaultContext is the default context to run xorm queries in will be overwritten by Init with HammerContext
Functions ¶
func BuildCaseInsensitiveIn ¶ added in v1.21.0
BuildCaseInsensitiveIn returns a condition to check if the given value is in the given values case-insensitively. Handles especially SQLite correctly as UPPER there only transforms ASCII letters.
func BuildCaseInsensitiveLike ¶ added in v1.17.4
BuildCaseInsensitiveLike returns a condition to check if the given value is like the given key case-insensitively. Handles especially SQLite correctly as UPPER there only transforms ASCII letters.
func BuilderDialect ¶ added in v1.20.3
func BuilderDialect() string
BuilderDialect returns the xorm.Builder dialect of the engine
func Cell2Int64 ¶
Cell2Int64 converts a xorm.Cell type to int64, and handles possible irregular cases.
func ConvertUtf8ToUtf8mb4 ¶
func ConvertUtf8ToUtf8mb4() error
ConvertUtf8ToUtf8mb4 converts database and tables from utf8 to utf8mb4 if it's mysql and set ROW_FORMAT=dynamic
func ConvertVarcharToNVarchar ¶ added in v1.19.2
func ConvertVarcharToNVarchar() error
ConvertVarcharToNVarchar converts database and tables from varchar to nvarchar if it's mssql
func CountBadSequences ¶
CountBadSequences looks for broken sequences from recreate-table mistakes
func CountByBean ¶
CountByBean counts the number of database records according non-empty fields of the bean as conditions.
func CountOrphanedObjects ¶ added in v1.17.0
CountOrphanedObjects count subjects with have no existing refobject anymore
func DecrByIDs ¶ added in v1.19.0
DecrByIDs decreases the given column for entities of the "bean" type with one of the given ids by one Timestamps of the entities won't be updated
func DeleteAllRecords ¶
DeleteAllRecords will delete all the records of this table
func DeleteBeans ¶ added in v1.17.0
DeleteBeans deletes all given beans, beans must contain delete conditions.
func DeleteByBean ¶
DeleteByBean deletes all records according non-empty fields of the bean as conditions.
func DeleteByID ¶ added in v1.19.0
DeleteByID deletes the given bean with the given ID
func DeleteOrphanedObjects ¶ added in v1.17.0
DeleteOrphanedObjects delete subjects with have no existing refobject anymore
func DeleteResourceIndex ¶ added in v1.17.4
DeleteResourceIndex delete resource index
func DumpDatabase ¶
DumpDatabase dumps all data from database according the special database SQL syntax to file system.
func DumpTables ¶
DumpTables dump tables information
func ErrCancelledf ¶
ErrCancelledf returns an ErrCancelled for the provided format and args
func Find ¶ added in v1.18.4
func Find[T any](ctx context.Context, opts FindOptions, objects *[]T) error
Find represents a common find function which accept an options interface
func FindAndCount ¶ added in v1.18.4
FindAndCount represents a common findandcount function which accept an options interface
func FindIDs ¶ added in v1.19.0
FindIDs finds the IDs for the given table name satisfying the given condition By passing a different value than "id" for "idCol", you can query for foreign IDs, i.e. the repo IDs which satisfy the condition
func FixBadSequences ¶
FixBadSequences fixes for broken sequences from recreate-table mistakes
func GetByBean ¶
GetByBean filled empty fields of the bean according non-empty fields to query in database.
func GetNextResourceIndex ¶
GetNextResourceIndex generates a resource index, it must run in the same transaction where the resource is created
func GetPaginatedSession ¶
GetPaginatedSession creates a paginated database session
func InTransaction ¶ added in v1.17.4
InTransaction returns true if the engine is in a transaction otherwise return false
func InitEngine ¶
InitEngine initializes the xorm.Engine and sets it as db.DefaultContext
func InitEngineWithMigration ¶
InitEngineWithMigration initializes a new xorm.Engine and sets it as the db.DefaultContext This function must never call .Sync() if the provided migration function fails. When called from the "doctor" command, the migration function is a version check that prevents the doctor from fixing anything in the database if the migration level is different from the expected value.
func IsErrCancelled ¶
IsErrCancelled checks if an error is a ErrCancelled.
func IsErrConditionRequired ¶ added in v1.21.2
IsErrConditionRequired checks if an error is an ErrConditionRequired
func IsErrNameCharsNotAllowed ¶
IsErrNameCharsNotAllowed checks if an error is an ErrNameCharsNotAllowed.
func IsErrNamePatternNotAllowed ¶
IsErrNamePatternNotAllowed checks if an error is an ErrNamePatternNotAllowed.
func IsErrNameReserved ¶
IsErrNameReserved checks if an error is a ErrNameReserved.
func IsErrNotExist ¶ added in v1.17.0
IsErrNotExist checks if an error is an ErrNotExist
func IsErrSSHDisabled ¶
IsErrSSHDisabled checks if an error is a ErrSSHDisabled.
func IsTableNotEmpty ¶
IsTableNotEmpty returns true if table has at least one record
func IsUsableName ¶
IsUsableName checks if name is reserved or pattern of name is not allowed based on given reserved names and patterns. Names are exact match, patterns can be prefix or suffix match with placeholder '*'.
func Iterate ¶
func Iterate[Bean any](ctx context.Context, cond builder.Cond, f func(ctx context.Context, bean *Bean) error) error
Iterate iterate all the Bean object
func MaxBatchInsertSize ¶
MaxBatchInsertSize returns the table's max batch insert size
func NamesToBean ¶
NamesToBean return a list of beans or an error
func NewXORMLogger ¶
NewXORMLogger inits a log bridge for xorm
func RegisterModel ¶
RegisterModel registers model, if initfunc provided, it will be invoked after data model sync
func SetDefaultEngine ¶
SetDefaultEngine sets the default engine for db
func SetSessionPagination ¶
SetSessionPagination sets pagination for a database session
func SyncAllTables ¶
func SyncAllTables() error
SyncAllTables sync the schemas of all tables, is required by unit test code
func SyncMaxResourceIndex ¶ added in v1.17.4
func SyncMaxResourceIndex(ctx context.Context, tableName string, groupID, maxIndex int64) (err error)
SyncMaxResourceIndex sync the max index with the resource
func TruncateBeans ¶ added in v1.20.0
TruncateBeans deletes all given beans, beans may contain delete conditions.
func TxContext ¶
TxContext represents a transaction Context, it will reuse the existing transaction in the parent context or create a new one. Some tips to use:
1 It's always recommended to use `WithTx` in new code instead of `TxContext`, since `WithTx` will handle the transaction automatically. 2. To maintain the old code which uses `TxContext`: a. Always call `Close()` before returning regardless of whether `Commit()` has been called. b. Always call `Commit()` before returning if there are no errors, even if the code did not change any data. c. Remember the `Committer` will be a halfCommitter when a transaction is being reused. So calling `Commit()` will do nothing, but calling `Close()` without calling `Commit()` will rollback the transaction. And all operations submitted by the caller stack will be rollbacked as well, not only the operations in the current function. d. It doesn't mean rollback is forbidden, but always do it only when there is an error, and you do want to rollback.
func UnsetDefaultEngine ¶
func UnsetDefaultEngine()
UnsetDefaultEngine closes and unsets the default engine We hope the SetDefaultEngine and UnsetDefaultEngine can be paired, but it's impossible now, there are many calls to InitEngine -> SetDefaultEngine directly to overwrite the `x` and DefaultContext without close Global database engine related functions are all racy and there is no graceful close right now.
Types ¶
type AbsoluteListOptions ¶
type AbsoluteListOptions struct {
// contains filtered or unexported fields
}
AbsoluteListOptions absolute options to paginate results
func NewAbsoluteListOptions ¶
func NewAbsoluteListOptions(skip, take int) *AbsoluteListOptions
NewAbsoluteListOptions creates a list option with applied limits
func (*AbsoluteListOptions) GetSkipTake ¶
func (opts *AbsoluteListOptions) GetSkipTake() (skip, take int)
GetSkipTake returns the skip and take values
func (*AbsoluteListOptions) GetStartEnd ¶
func (opts *AbsoluteListOptions) GetStartEnd() (start, end int)
GetStartEnd returns the start and end values
func (*AbsoluteListOptions) IsListAll ¶ added in v1.18.4
func (opts *AbsoluteListOptions) IsListAll() bool
IsListAll will always return false
type Context ¶
Context represents a db context
func (*Context) InTransaction ¶ added in v1.17.4
InTransaction if context is in a transaction
type Engine ¶
type Engine interface { Table(tableNameOrBean any) *xorm.Session Count(...any) (int64, error) Decr(column string, arg ...any) *xorm.Session Delete(...any) (int64, error) Truncate(...any) (int64, error) Exec(...any) (sql.Result, error) Find(any, ...any) error Get(beans ...any) (bool, error) ID(any) *xorm.Session In(string, ...any) *xorm.Session Incr(column string, arg ...any) *xorm.Session Insert(...any) (int64, error) Iterate(any, xorm.IterFunc) error Join(joinOperator string, tablename, condition any, args ...any) *xorm.Session SQL(any, ...any) *xorm.Session Where(any, ...any) *xorm.Session Asc(colNames ...string) *xorm.Session Desc(colNames ...string) *xorm.Session Limit(limit int, start ...int) *xorm.Session NoAutoTime() *xorm.Session SumInt(bean any, columnName string) (res int64, err error) Sync(...any) error Select(string) *xorm.Session NotIn(string, ...any) *xorm.Session OrderBy(any, ...any) *xorm.Session Exist(...any) (bool, error) Distinct(...string) *xorm.Session Query(...any) ([]map[string][]byte, error) Cols(...string) *xorm.Session Context(ctx context.Context) *xorm.Session Ping() error }
Engine represents a xorm engine or session.
func GetEngine ¶
GetEngine will get a db Engine from this context or return an Engine restricted to this context
func SetEnginePagination ¶
SetEnginePagination sets pagination for a database engine
type ErrCancelled ¶
type ErrCancelled struct {
Message string
}
ErrCancelled represents an error due to context cancellation
func (ErrCancelled) Error ¶
func (err ErrCancelled) Error() string
type ErrConditionRequired ¶ added in v1.21.2
type ErrConditionRequired struct{}
ErrConditionRequired represents an error which require condition.
func (ErrConditionRequired) Error ¶ added in v1.21.2
func (err ErrConditionRequired) Error() string
func (ErrConditionRequired) Unwrap ¶ added in v1.21.2
func (err ErrConditionRequired) Unwrap() error
Unwrap unwraps this as a ErrNotExist err
type ErrNameCharsNotAllowed ¶
type ErrNameCharsNotAllowed struct {
Name string
}
ErrNameCharsNotAllowed represents a "character not allowed in name" error.
func (ErrNameCharsNotAllowed) Error ¶
func (err ErrNameCharsNotAllowed) Error() string
func (ErrNameCharsNotAllowed) Unwrap ¶ added in v1.17.4
func (err ErrNameCharsNotAllowed) Unwrap() error
Unwrap unwraps this as a ErrInvalid err
type ErrNamePatternNotAllowed ¶
type ErrNamePatternNotAllowed struct {
Pattern string
}
ErrNamePatternNotAllowed represents a "pattern not allowed" error.
func (ErrNamePatternNotAllowed) Error ¶
func (err ErrNamePatternNotAllowed) Error() string
func (ErrNamePatternNotAllowed) Unwrap ¶ added in v1.17.4
func (err ErrNamePatternNotAllowed) Unwrap() error
Unwrap unwraps this as a ErrInvalid err
type ErrNameReserved ¶
type ErrNameReserved struct {
Name string
}
ErrNameReserved represents a "reserved name" error.
func (ErrNameReserved) Error ¶
func (err ErrNameReserved) Error() string
func (ErrNameReserved) Unwrap ¶ added in v1.17.4
func (err ErrNameReserved) Unwrap() error
Unwrap unwraps this as a ErrInvalid err
type ErrNotExist ¶ added in v1.17.0
ErrNotExist represents a non-exist error.
func (ErrNotExist) Error ¶ added in v1.17.0
func (err ErrNotExist) Error() string
func (ErrNotExist) Unwrap ¶ added in v1.17.4
func (err ErrNotExist) Unwrap() error
Unwrap unwraps this as a ErrNotExist err
type ErrSSHDisabled ¶
type ErrSSHDisabled struct{}
ErrSSHDisabled represents an "SSH disabled" error.
func (ErrSSHDisabled) Error ¶
func (err ErrSSHDisabled) Error() string
type FindOptions ¶ added in v1.18.4
FindOptions represents a find options
type ListOptions ¶
type ListOptions struct { PageSize int Page int // start from 1 ListAll bool // if true, then PageSize and Page will not be taken }
ListOptions options to paginate results
func (*ListOptions) GetSkipTake ¶
func (opts *ListOptions) GetSkipTake() (skip, take int)
GetSkipTake returns the skip and take values
func (*ListOptions) GetStartEnd ¶
func (opts *ListOptions) GetStartEnd() (start, end int)
GetStartEnd returns the start and end of the ListOptions
func (*ListOptions) IsListAll ¶ added in v1.18.4
func (opts *ListOptions) IsListAll() bool
IsListAll indicates PageSize and Page will be ignored
func (*ListOptions) SetDefaultValues ¶
func (opts *ListOptions) SetDefaultValues()
SetDefaultValues sets default values
type Paginator ¶
type Paginator interface { GetSkipTake() (skip, take int) GetStartEnd() (start, end int) IsListAll() bool }
Paginator is the base for different ListOptions types
type ResourceIndex ¶
ResourceIndex represents a resource index which could be used as issue/release and others We can create different tables i.e. issue_index, release_index, etc.
type SearchOrderBy ¶
type SearchOrderBy string
SearchOrderBy is used to sort the result
const ( SearchOrderByAlphabetically SearchOrderBy = "name ASC" SearchOrderByAlphabeticallyReverse SearchOrderBy = "name DESC" SearchOrderByLeastUpdated SearchOrderBy = "updated_unix ASC" SearchOrderByRecentUpdated SearchOrderBy = "updated_unix DESC" SearchOrderByOldest SearchOrderBy = "created_unix ASC" SearchOrderByNewest SearchOrderBy = "created_unix DESC" SearchOrderBySize SearchOrderBy = "size ASC" SearchOrderBySizeReverse SearchOrderBy = "size DESC" SearchOrderByGitSize SearchOrderBy = "git_size ASC" SearchOrderByGitSizeReverse SearchOrderBy = "git_size DESC" SearchOrderByLFSSize SearchOrderBy = "lfs_size ASC" SearchOrderByLFSSizeReverse SearchOrderBy = "lfs_size DESC" SearchOrderByID SearchOrderBy = "id ASC" SearchOrderByIDReverse SearchOrderBy = "id DESC" SearchOrderByStars SearchOrderBy = "num_stars ASC" SearchOrderByStarsReverse SearchOrderBy = "num_stars DESC" SearchOrderByForks SearchOrderBy = "num_forks ASC" SearchOrderByForksReverse SearchOrderBy = "num_forks DESC" )
Strings for sorting result
func (SearchOrderBy) String ¶
func (s SearchOrderBy) String() string
type XORMLogBridge ¶
type XORMLogBridge struct {
// contains filtered or unexported fields
}
XORMLogBridge a logger bridge from Logger to xorm
func (*XORMLogBridge) Debugf ¶
func (l *XORMLogBridge) Debugf(format string, v ...any)
Debugf show debug log
func (*XORMLogBridge) Errorf ¶
func (l *XORMLogBridge) Errorf(format string, v ...any)
Errorf show error log
func (*XORMLogBridge) Infof ¶
func (l *XORMLogBridge) Infof(format string, v ...any)
Infof show information level log
func (*XORMLogBridge) Level ¶
func (l *XORMLogBridge) Level() xormlog.LogLevel
Level get logger level
func (*XORMLogBridge) SetLevel ¶
func (l *XORMLogBridge) SetLevel(lvl xormlog.LogLevel)
SetLevel set the logger level
func (*XORMLogBridge) ShowSQL ¶
func (l *XORMLogBridge) ShowSQL(show ...bool)
ShowSQL set if record SQL
func (*XORMLogBridge) Warnf ¶
func (l *XORMLogBridge) Warnf(format string, v ...any)
Warnf show warnning log