Documentation ¶
Index ¶
- Variables
- func Expr(expr string, args ...interface{}) clause.Expr
- func Scan(rows *sql.Rows, db *DB, initialized bool)
- type AfterCreateInterface
- type AfterDeleteInterface
- type AfterFindInterface
- type AfterSaveInterface
- type AfterUpdateInterface
- type Association
- func (association *Association) Append(values ...interface{}) error
- func (association *Association) Clear() error
- func (association *Association) Count() (count int64)
- func (association *Association) Delete(values ...interface{}) error
- func (association *Association) Find(out interface{}, conds ...interface{}) error
- func (association *Association) Replace(values ...interface{}) error
- type BeforeCreateInterface
- type BeforeDeleteInterface
- type BeforeSaveInterface
- type BeforeUpdateInterface
- type Config
- type ConnPool
- type ConnPoolBeginner
- type DB
- func (db *DB) AddError(err error) error
- func (db *DB) Assign(attrs ...interface{}) (tx *DB)
- func (db *DB) Association(column string) *Association
- func (db *DB) Attrs(attrs ...interface{}) (tx *DB)
- func (db *DB) AutoMigrate(dst ...interface{}) error
- func (db *DB) Begin(opts ...*sql.TxOptions) *DB
- func (db *DB) Callback() *callbacks
- func (db *DB) Clauses(conds ...clause.Expression) (tx *DB)
- func (db *DB) Commit() *DB
- func (db *DB) Count(count *int64) (tx *DB)
- func (db *DB) Create(value interface{}) (tx *DB)
- func (db *DB) Debug() (tx *DB)
- func (db *DB) Delete(value interface{}, conds ...interface{}) (tx *DB)
- func (db *DB) Distinct(args ...interface{}) (tx *DB)
- func (db *DB) Exec(sql string, values ...interface{}) (tx *DB)
- func (db *DB) Find(dest interface{}, conds ...interface{}) (tx *DB)
- func (db *DB) FindInBatches(dest interface{}, batchSize int, fc func(tx *DB, batch int) error) (tx *DB)
- func (db *DB) First(dest interface{}, conds ...interface{}) (tx *DB)
- func (db *DB) FirstOrCreate(dest interface{}, conds ...interface{}) (tx *DB)
- func (db *DB) FirstOrInit(dest interface{}, conds ...interface{}) (tx *DB)
- func (db *DB) Get(key string) (interface{}, bool)
- func (db *DB) Group(name string) (tx *DB)
- func (db *DB) Having(query interface{}, args ...interface{}) (tx *DB)
- func (db *DB) InstanceGet(key string) (interface{}, bool)
- func (db *DB) InstanceSet(key string, value interface{}) *DB
- func (db *DB) Joins(query string, args ...interface{}) (tx *DB)
- func (db *DB) Last(dest interface{}, conds ...interface{}) (tx *DB)
- func (db *DB) Limit(limit int) (tx *DB)
- func (db *DB) Migrator() Migrator
- func (db *DB) Model(value interface{}) (tx *DB)
- func (db *DB) Not(query interface{}, args ...interface{}) (tx *DB)
- func (db *DB) Offset(offset int) (tx *DB)
- func (db *DB) Omit(columns ...string) (tx *DB)
- func (db *DB) Or(query interface{}, args ...interface{}) (tx *DB)
- func (db *DB) Order(value interface{}) (tx *DB)
- func (db *DB) Pluck(column string, dest interface{}) (tx *DB)
- func (db *DB) Preload(query string, args ...interface{}) (tx *DB)
- func (db *DB) Raw(sql string, values ...interface{}) (tx *DB)
- func (db *DB) Rollback() *DB
- func (db *DB) Row() *sql.Row
- func (db *DB) Rows() (*sql.Rows, error)
- func (db *DB) Save(value interface{}) (tx *DB)
- func (db *DB) Scan(dest interface{}) (tx *DB)
- func (db *DB) ScanRows(rows *sql.Rows, dest interface{}) error
- func (db *DB) Scopes(funcs ...func(*DB) *DB) *DB
- func (db *DB) Select(query interface{}, args ...interface{}) (tx *DB)
- func (db *DB) Session(config *Session) *DB
- func (db *DB) Set(key string, value interface{}) *DB
- func (db *DB) SetupJoinTable(model interface{}, field string, joinTable interface{}) error
- func (db *DB) Table(name string) (tx *DB)
- func (db *DB) Take(dest interface{}, conds ...interface{}) (tx *DB)
- func (db *DB) Transaction(fc func(tx *DB) error, opts ...*sql.TxOptions) (err error)
- func (db *DB) Unscoped() (tx *DB)
- func (db *DB) Update(column string, value interface{}) (tx *DB)
- func (db *DB) UpdateColumn(column string, value interface{}) (tx *DB)
- func (db *DB) UpdateColumns(values interface{}) (tx *DB)
- func (db *DB) Updates(values interface{}) (tx *DB)
- func (db *DB) Where(query interface{}, args ...interface{}) (tx *DB)
- func (db *DB) WithContext(ctx context.Context) *DB
- type DeletedAt
- type Dialector
- type Migrator
- type Model
- type PreparedStmtDB
- func (db *PreparedStmtDB) BeginTx(ctx context.Context, opt *sql.TxOptions) (ConnPool, error)
- func (db *PreparedStmtDB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (db *PreparedStmtDB) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (db *PreparedStmtDB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
- type PreparedStmtTX
- func (tx *PreparedStmtTX) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (tx *PreparedStmtTX) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (tx *PreparedStmtTX) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
- type Session
- type SoftDeleteClause
- type Statement
- func (stmt *Statement) AddClause(v clause.Interface)
- func (stmt *Statement) AddClauseIfNotExists(v clause.Interface)
- func (stmt *Statement) AddVar(writer clause.Writer, vars ...interface{})
- func (stmt *Statement) Build(clauses ...string)
- func (stmt *Statement) BuildCondition(query interface{}, args ...interface{}) (conds []clause.Expression)
- func (stmt *Statement) Parse(value interface{}) (err error)
- func (stmt *Statement) Quote(field interface{}) string
- func (stmt *Statement) QuoteTo(writer clause.Writer, field interface{})
- func (stmt *Statement) WriteByte(c byte) error
- func (stmt *Statement) WriteQuoted(value interface{}) error
- func (stmt *Statement) WriteString(str string) (int, error)
- type StatementModifier
- type TxBeginner
- type TxCommitter
- type ViewOption
Constants ¶
This section is empty.
Variables ¶
var ( // ErrRecordNotFound record not found error ErrRecordNotFound = errors.New("record not found") // ErrInvalidSQL invalid SQL error, happens when you passed invalid SQL ErrInvalidSQL = errors.New("invalid SQL") // ErrInvalidTransaction invalid transaction when you are trying to `Commit` or `Rollback` ErrInvalidTransaction = errors.New("no valid transaction") // ErrUnaddressable unaddressable value ErrUnaddressable = errors.New("using unaddressable value") // ErrNotImplemented not implemented ErrNotImplemented = errors.New("not implemented") // ErrMissingWhereClause missing where clause ErrMissingWhereClause = errors.New("WHERE conditions required") // ErrUnsupportedRelation unsupported relations ErrUnsupportedRelation = errors.New("unsupported relations") // ErrPtrStructSupported only ptr of struct supported ErrPtrStructSupported = errors.New("only ptr of struct supported") // ErrorPrimaryKeyRequired primary keys required ErrorPrimaryKeyRequired = errors.New("primary key required") // ErrorModelValueRequired model value required ErrorModelValueRequired = errors.New("model value required") )
Functions ¶
Types ¶
type AfterCreateInterface ¶
type AfterDeleteInterface ¶
type AfterFindInterface ¶
type AfterSaveInterface ¶
type AfterUpdateInterface ¶
type Association ¶
type Association struct { DB *DB Relationship *schema.Relationship Error error }
Association Mode contains some helper methods to handle relationship things easily.
func (*Association) Append ¶
func (association *Association) Append(values ...interface{}) error
func (*Association) Clear ¶
func (association *Association) Clear() error
func (*Association) Count ¶
func (association *Association) Count() (count int64)
func (*Association) Delete ¶
func (association *Association) Delete(values ...interface{}) error
func (*Association) Find ¶
func (association *Association) Find(out interface{}, conds ...interface{}) error
func (*Association) Replace ¶
func (association *Association) Replace(values ...interface{}) error
type BeforeCreateInterface ¶
type BeforeDeleteInterface ¶
type BeforeSaveInterface ¶
type BeforeUpdateInterface ¶
type Config ¶
type Config struct { // GORM perform single create, update, delete operations in transactions by default to ensure database data integrity // You can disable it by setting `SkipDefaultTransaction` to true SkipDefaultTransaction bool // NamingStrategy tables, columns naming strategy NamingStrategy schema.Namer // Logger Logger logger.Interface // NowFunc the function to be used when creating a new timestamp NowFunc func() time.Time // DryRun generate sql without execute DryRun bool // PrepareStmt executes the given query in cached statement PrepareStmt bool // DisableAutomaticPing DisableAutomaticPing bool // ClauseBuilders clause builder ClauseBuilders map[string]clause.ClauseBuilder // ConnPool db conn pool ConnPool ConnPool // Dialector database dialector Dialector // contains filtered or unexported fields }
Config GORM config
type ConnPool ¶
type ConnPool interface { PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row }
ConnPool db conns pool interface
type ConnPoolBeginner ¶ added in v0.2.3
type DB ¶
type DB struct { *Config Error error RowsAffected int64 Statement *Statement // contains filtered or unexported fields }
DB GORM DB definition
func (*DB) Association ¶
func (db *DB) Association(column string) *Association
func (*DB) AutoMigrate ¶
AutoMigrate run auto migration for given models
func (*DB) Delete ¶
Delete delete value match given conditions, if the value has primary key, then will including the primary key as condition
func (*DB) FindInBatches ¶ added in v0.2.6
func (db *DB) FindInBatches(dest interface{}, batchSize int, fc func(tx *DB, batch int) error) (tx *DB)
FindInBatches find records in batches
func (*DB) FirstOrCreate ¶
func (*DB) FirstOrInit ¶
func (*DB) InstanceGet ¶
InstanceGet get value with key from current db instance's context
func (*DB) InstanceSet ¶
InstanceSet store value with key into current db instance's context
func (*DB) Joins ¶
Joins specify Joins conditions
db.Joins("Account").Find(&user) db.Joins("JOIN emails ON emails.user_id = users.id AND emails.email = ?", "jinzhu@example.org").Find(&user)
func (*DB) Model ¶
Model specify the model you would like to run db operations
// update all users's name to `hello` db.Model(&User{}).Update("name", "hello") // if user's primary key is non-blank, will use it as condition, then will only update the user's name to `hello` db.Model(&user).Update("name", "hello")
func (*DB) Offset ¶
Offset specify the number of records to skip before starting to return the records
func (*DB) Order ¶
Order specify order when retrieve records from database
db.Order("name DESC") db.Order(gorm.Expr("name = ? DESC", "first")) // sql expression
func (*DB) Pluck ¶
Pluck used to query single column from a model as a map
var ages []int64 db.Find(&users).Pluck("age", &ages)
func (*DB) Preload ¶
Preload preload associations with given conditions
db.Preload("Orders", "state NOT IN (?)", "cancelled").Find(&users)
func (*DB) Save ¶
Save update value in database, if the value doesn't have primary key, will insert it
func (*DB) Scopes ¶
Scopes pass current database connection to arguments `func(DB) DB`, which could be used to add conditions dynamically
func AmountGreaterThan1000(db *gorm.DB) *gorm.DB { return db.Where("amount > ?", 1000) } func OrderStatus(status []string) func (db *gorm.DB) *gorm.DB { return func (db *gorm.DB) *gorm.DB { return db.Scopes(AmountGreaterThan1000).Where("status in (?)", status) } } db.Scopes(AmountGreaterThan1000, OrderStatus([]string{"paid", "shipped"})).Find(&orders)
func (*DB) SetupJoinTable ¶
func (*DB) Take ¶
Take return a record that match given conditions, the order will depend on the database implementation
func (*DB) Transaction ¶
Transaction start a transaction as a block, return error will rollback, otherwise to commit.
func (*DB) Update ¶
Update update attributes with callbacks, refer: https://jinzhu.github.io/gorm/crud.html#update
func (*DB) UpdateColumn ¶
func (*DB) UpdateColumns ¶
func (*DB) Updates ¶
Updates update attributes with callbacks, refer: https://jinzhu.github.io/gorm/crud.html#update
type DeletedAt ¶
func (DeletedAt) DeleteClauses ¶
func (DeletedAt) QueryClauses ¶
type Dialector ¶
type Dialector interface { Name() string Initialize(*DB) error Migrator(db *DB) Migrator DataTypeOf(*schema.Field) string BindVarTo(writer clause.Writer, stmt *Statement, v interface{}) QuoteTo(clause.Writer, string) Explain(sql string, vars ...interface{}) string }
Dialector GORM database dialector
type Migrator ¶
type Migrator interface { // AutoMigrate AutoMigrate(dst ...interface{}) error // Database CurrentDatabase() string // Tables CreateTable(dst ...interface{}) error DropTable(dst ...interface{}) error HasTable(dst interface{}) bool RenameTable(oldName, newName interface{}) error // Columns AddColumn(dst interface{}, field string) error DropColumn(dst interface{}, field string) error AlterColumn(dst interface{}, field string) error HasColumn(dst interface{}, field string) bool RenameColumn(dst interface{}, oldName, field string) error ColumnTypes(dst interface{}) ([]*sql.ColumnType, error) // Views CreateView(name string, option ViewOption) error DropView(name string) error // Constraints CreateConstraint(dst interface{}, name string) error DropConstraint(dst interface{}, name string) error HasConstraint(dst interface{}, name string) bool // Indexes CreateIndex(dst interface{}, name string) error DropIndex(dst interface{}, name string) error HasIndex(dst interface{}, name string) bool RenameIndex(dst interface{}, oldName, newName string) error }
type Model ¶
type Model struct { ID uint `gorm:"primarykey"` CreatedAt time.Time UpdatedAt time.Time DeletedAt DeletedAt `gorm:"index"` }
Model a basic GoLang struct which includes the following fields: ID, CreatedAt, UpdatedAt, DeletedAt It may be embedded into your model or you may build your own model without it
type User struct { gorm.Model }
type PreparedStmtDB ¶ added in v0.2.3
type PreparedStmtDB struct { ConnPool // contains filtered or unexported fields }
func (*PreparedStmtDB) ExecContext ¶ added in v0.2.3
func (*PreparedStmtDB) QueryContext ¶ added in v0.2.3
func (*PreparedStmtDB) QueryRowContext ¶ added in v0.2.3
type PreparedStmtTX ¶ added in v0.2.3
type PreparedStmtTX struct { *sql.Tx PreparedStmtDB *PreparedStmtDB }
func (*PreparedStmtTX) ExecContext ¶ added in v0.2.3
func (*PreparedStmtTX) QueryContext ¶ added in v0.2.3
func (*PreparedStmtTX) QueryRowContext ¶ added in v0.2.3
type Session ¶
type Session struct { DryRun bool PrepareStmt bool WithConditions bool Context context.Context Logger logger.Interface NowFunc func() time.Time }
Session session config when create session with Session() method
type SoftDeleteClause ¶
type SoftDeleteClause struct { }
func (SoftDeleteClause) Build ¶
func (SoftDeleteClause) Build(clause.Builder)
func (SoftDeleteClause) MergeClause ¶
func (SoftDeleteClause) MergeClause(*clause.Clause)
func (SoftDeleteClause) ModifyStatement ¶
func (SoftDeleteClause) ModifyStatement(stmt *Statement)
func (SoftDeleteClause) Name ¶
func (SoftDeleteClause) Name() string
type Statement ¶
type Statement struct { *DB Table string Model interface{} Unscoped bool Dest interface{} ReflectValue reflect.Value Clauses map[string]clause.Clause Distinct bool Selects []string // selected columns Omits []string // omit columns Joins map[string][]interface{} Preloads map[string][]interface{} Settings sync.Map ConnPool ConnPool Schema *schema.Schema Context context.Context RaiseErrorOnNotFound bool UpdatingColumn bool SQL strings.Builder Vars []interface{} NamedVars []sql.NamedArg // contains filtered or unexported fields }
Statement statement
func (*Statement) AddClauseIfNotExists ¶
AddClauseIfNotExists add clause if not exists
func (*Statement) BuildCondition ¶ added in v0.2.5
func (stmt *Statement) BuildCondition(query interface{}, args ...interface{}) (conds []clause.Expression)
BuildCondition build condition
func (*Statement) WriteQuoted ¶
WriteQuoted write quoted value
type StatementModifier ¶
type StatementModifier interface {
ModifyStatement(*Statement)
}
StatementModifier statement modifier interface
type TxBeginner ¶
type TxCommitter ¶ added in v0.2.3
type ViewOption ¶
ViewOption view option