db

package
v1.17.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2022 License: MIT Imports: 23 Imported by: 96

Documentation

Index

Constants

View Source
const (
	// DefaultMaxInSize represents default variables number on IN () in SQL
	DefaultMaxInSize = 50
)
View Source
const (
	// MaxDupIndexAttempts max retry times to create index
	MaxDupIndexAttempts = 3
)

Variables

View Source
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")
)
View Source
var (
	// ErrNameEmpty name is empty error
	ErrNameEmpty = errors.New("Name is empty")

	// AlphaDashDotPattern characters prohibited in a user name (anything except A-Za-z0-9_.-)
	AlphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`)
)
View Source
var DefaultContext context.Context

DefaultContext is the default context to run xorm queries in will be overwritten by Init with HammerContext

View Source
var EnginedContextKey = &contextKey{"engined"}

EnginedContextKey is a context key. It is used with context.Value() to get the current Engined for the context

View Source
var (

	// HasEngine specifies if we have a xorm.Engine
	HasEngine bool
)

Functions

func Cell2Int64

func Cell2Int64(val xorm.Cell) int64

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 CountBadSequences

func CountBadSequences() (int64, error)

CountBadSequences looks for broken sequences from recreate-table mistakes

func CountByBean

func CountByBean(ctx context.Context, bean interface{}) (int64, error)

CountByBean counts the number of database records according non-empty fields of the bean as conditions.

func CountOrphanedObjects added in v1.17.0

func CountOrphanedObjects(subject, refobject, joinCond string) (int64, error)

CountOrphanedObjects count subjects with have no existing refobject anymore

func DeleteAllRecords

func DeleteAllRecords(tableName string) error

DeleteAllRecords will delete all the records of this table

func DeleteBeans added in v1.17.0

func DeleteBeans(ctx context.Context, beans ...interface{}) (err error)

DeleteBeans deletes all given beans, beans should contain delete conditions.

func DeleteByBean

func DeleteByBean(ctx context.Context, bean interface{}) (int64, error)

DeleteByBean deletes all records according non-empty fields of the bean as conditions.

func DeleteOrphanedObjects added in v1.17.0

func DeleteOrphanedObjects(subject, refobject, joinCond string) error

DeleteOrphanedObjects delete subjects with have no existing refobject anymore

func DeleteResouceIndex

func DeleteResouceIndex(ctx context.Context, tableName string, groupID int64) error

DeleteResouceIndex delete resource index

func DumpDatabase

func DumpDatabase(filePath, dbType string) error

DumpDatabase dumps all data from database according the special database SQL syntax to file system.

func DumpTables

func DumpTables(tables []*schemas.Table, w io.Writer, tp ...schemas.DBType) error

DumpTables dump tables information

func ErrCancelledf

func ErrCancelledf(format string, args ...interface{}) error

ErrCancelledf returns an ErrCancelled for the provided format and args

func EstimateCount added in v1.17.0

func EstimateCount(ctx context.Context, bean interface{}) (int64, error)

EstimateCount returns an estimate of total number of rows in table

func Exec

func Exec(ctx context.Context, sqlAndArgs ...interface{}) (sql.Result, error)

Exec executes a sql with args

func FixBadSequences

func FixBadSequences() error

FixBadSequences fixes for broken sequences from recreate-table mistakes

func GetByBean

func GetByBean(ctx context.Context, bean interface{}) (bool, error)

GetByBean filled empty fields of the bean according non-empty fields to query in database.

func GetMaxID

func GetMaxID(beanOrTableName interface{}) (maxID int64, err error)

GetMaxID will return max id of the table

func GetNextResourceIndex

func GetNextResourceIndex(tableName string, groupID int64) (int64, error)

GetNextResourceIndex retried 3 times to generate a resource index

func GetPaginatedSession

func GetPaginatedSession(p Paginator) *xorm.Session

GetPaginatedSession creates a paginated database session

func InitEngine

func InitEngine(ctx context.Context) error

InitEngine initializes the xorm.Engine and sets it as db.DefaultContext

func InitEngineWithMigration

func InitEngineWithMigration(ctx context.Context, migrateFunc func(*xorm.Engine) error) (err error)

InitEngineWithMigration initializes a new xorm.Engine and sets it as the db.DefaultContext This function must never call .Sync2() 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 Insert

func Insert(ctx context.Context, beans ...interface{}) error

Insert inserts records into database

func IsErrCancelled

func IsErrCancelled(err error) bool

IsErrCancelled checks if an error is a ErrCancelled.

func IsErrNameCharsNotAllowed

func IsErrNameCharsNotAllowed(err error) bool

IsErrNameCharsNotAllowed checks if an error is an ErrNameCharsNotAllowed.

func IsErrNamePatternNotAllowed

func IsErrNamePatternNotAllowed(err error) bool

IsErrNamePatternNotAllowed checks if an error is an ErrNamePatternNotAllowed.

func IsErrNameReserved

func IsErrNameReserved(err error) bool

IsErrNameReserved checks if an error is a ErrNameReserved.

func IsErrNotExist added in v1.17.0

func IsErrNotExist(err error) bool

IsErrNotExist checks if an error is an ErrNotExist

func IsErrSSHDisabled

func IsErrSSHDisabled(err error) bool

IsErrSSHDisabled checks if an error is a ErrSSHDisabled.

func IsTableNotEmpty

func IsTableNotEmpty(tableName string) (bool, error)

IsTableNotEmpty returns true if table has at least one record

func IsUsableName

func IsUsableName(names, patterns []string, name string) error

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(ctx context.Context, tableBean interface{}, cond builder.Cond, fun func(idx int, bean interface{}) error) error

Iterate iterates the databases and doing something

func MaxBatchInsertSize

func MaxBatchInsertSize(bean interface{}) int

MaxBatchInsertSize returns the table's max batch insert size

func NamesToBean

func NamesToBean(names ...string) ([]interface{}, error)

NamesToBean return a list of beans or an error

func NewXORMLogger

func NewXORMLogger(showSQL bool) xormlog.Logger

NewXORMLogger inits a log bridge for xorm

func RegisterModel

func RegisterModel(bean interface{}, initFunc ...func() error)

RegisterModel registers model, if initfunc provided, it will be invoked after data model sync

func SetDefaultEngine

func SetDefaultEngine(ctx context.Context, eng *xorm.Engine)

SetDefaultEngine sets the default engine for db

func SetSessionPagination

func SetSessionPagination(sess Engine, p Paginator) *xorm.Session

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 TableInfo

func TableInfo(v interface{}) (*schemas.Table, error)

TableInfo returns table's information via an object

func TableName

func TableName(bean interface{}) string

TableName returns the table name according a bean object

func TxContext

func TxContext() (*Context, Committer, error)

TxContext represents a transaction Context

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.

func UpsertResourceIndex

func UpsertResourceIndex(ctx context.Context, tableName string, groupID int64) (err error)

UpsertResourceIndex the function will not return until it acquires the lock or receives an error.

func WithContext

func WithContext(f func(ctx *Context) error) error

WithContext represents executing database operations

func WithTx

func WithTx(f func(ctx context.Context) error, stdCtx ...context.Context) error

WithTx represents executing database operations on a transaction you can optionally change the context to a parrent one

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

type Committer

type Committer interface {
	Commit() error
	Close() error
}

Committer represents an interface to Commit or Close the Context

type Context

type Context struct {
	context.Context
	// contains filtered or unexported fields
}

Context represents a db context

func WithEngine

func WithEngine(ctx context.Context, e Engine) *Context

WithEngine returns a Context from a context.Context and Engine

func (*Context) Engine

func (ctx *Context) Engine() Engine

Engine returns db engine

func (*Context) Value

func (ctx *Context) Value(key interface{}) interface{}

Value shadows Value for context.Context but allows us to get ourselves and an Engined object

func (*Context) WithContext added in v1.17.0

func (ctx *Context) WithContext(other context.Context) *Context

WithContext returns this engine tied to this context

type Engine

type Engine interface {
	Table(tableNameOrBean interface{}) *xorm.Session
	Count(...interface{}) (int64, error)
	Decr(column string, arg ...interface{}) *xorm.Session
	Delete(...interface{}) (int64, error)
	Exec(...interface{}) (sql.Result, error)
	Find(interface{}, ...interface{}) error
	Get(beans ...interface{}) (bool, error)
	ID(interface{}) *xorm.Session
	In(string, ...interface{}) *xorm.Session
	Incr(column string, arg ...interface{}) *xorm.Session
	Insert(...interface{}) (int64, error)
	Iterate(interface{}, xorm.IterFunc) error
	Join(joinOperator string, tablename interface{}, condition string, args ...interface{}) *xorm.Session
	SQL(interface{}, ...interface{}) *xorm.Session
	Where(interface{}, ...interface{}) *xorm.Session
	Asc(colNames ...string) *xorm.Session
	Desc(colNames ...string) *xorm.Session
	Limit(limit int, start ...int) *xorm.Session
	NoAutoTime() *xorm.Session
	SumInt(bean interface{}, columnName string) (res int64, err error)
	Sync2(...interface{}) error
	Select(string) *xorm.Session
	NotIn(string, ...interface{}) *xorm.Session
	OrderBy(interface{}, ...interface{}) *xorm.Session
	Exist(...interface{}) (bool, error)
	Distinct(...string) *xorm.Session
	Query(...interface{}) ([]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

func GetEngine(ctx context.Context) Engine

GetEngine will get a db Engine from this context or return an Engine restricted to this context

func SetEnginePagination

func SetEnginePagination(e Engine, p Paginator) Engine

SetEnginePagination sets pagination for a database engine

type Engined

type Engined interface {
	Engine() Engine
}

Engined structs provide an 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 ErrNameCharsNotAllowed

type ErrNameCharsNotAllowed struct {
	Name string
}

ErrNameCharsNotAllowed represents a "character not allowed in name" error.

func (ErrNameCharsNotAllowed) Error

func (err ErrNameCharsNotAllowed) Error() string

type ErrNamePatternNotAllowed

type ErrNamePatternNotAllowed struct {
	Pattern string
}

ErrNamePatternNotAllowed represents a "pattern not allowed" error.

func (ErrNamePatternNotAllowed) Error

func (err ErrNamePatternNotAllowed) Error() string

type ErrNameReserved

type ErrNameReserved struct {
	Name string
}

ErrNameReserved represents a "reserved name" error.

func (ErrNameReserved) Error

func (err ErrNameReserved) Error() string

type ErrNotExist added in v1.17.0

type ErrNotExist struct {
	ID int64
}

ErrNotExist represents a non-exist error.

func (ErrNotExist) Error added in v1.17.0

func (err ErrNotExist) Error() string

type ErrSSHDisabled

type ErrSSHDisabled struct{}

ErrSSHDisabled represents an "SSH disabled" error.

func (ErrSSHDisabled) Error

func (err ErrSSHDisabled) Error() string

type ListOptions

type ListOptions struct {
	PageSize int
	Page     int // start from 1
}

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) SetDefaultValues

func (opts *ListOptions) SetDefaultValues()

SetDefaultValues sets default values

type Paginator

type Paginator interface {
	GetSkipTake() (skip, take int)
	GetStartEnd() (start, end int)
}

Paginator is the base for different ListOptions types

type ResourceIndex

type ResourceIndex struct {
	GroupID  int64 `xorm:"pk"`
	MaxIndex int64 `xorm:"index"`
}

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 and 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"
	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) Debug

func (l *XORMLogBridge) Debug(v ...interface{})

Debug show debug log

func (*XORMLogBridge) Debugf

func (l *XORMLogBridge) Debugf(format string, v ...interface{})

Debugf show debug log

func (*XORMLogBridge) Error

func (l *XORMLogBridge) Error(v ...interface{})

Error show error log

func (*XORMLogBridge) Errorf

func (l *XORMLogBridge) Errorf(format string, v ...interface{})

Errorf show error log

func (*XORMLogBridge) Info

func (l *XORMLogBridge) Info(v ...interface{})

Info show information level log

func (*XORMLogBridge) Infof

func (l *XORMLogBridge) Infof(format string, v ...interface{})

Infof show information level log

func (*XORMLogBridge) IsShowSQL

func (l *XORMLogBridge) IsShowSQL() bool

IsShowSQL if record SQL

func (*XORMLogBridge) Level

func (l *XORMLogBridge) Level() xormlog.LogLevel

Level get logger level

func (*XORMLogBridge) Log

func (l *XORMLogBridge) Log(skip int, level log.Level, format string, v ...interface{}) error

Log a message with defined skip and at logging 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) Warn

func (l *XORMLogBridge) Warn(v ...interface{})

Warn show warning log

func (*XORMLogBridge) Warnf

func (l *XORMLogBridge) Warnf(format string, v ...interface{})

Warnf show warnning log

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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