Documentation
¶
Index ¶
- Constants
- func Append(fmter Formatter, b []byte, v interface{}) []byte
- func AppendBoolValue(fmter Formatter, b []byte, v reflect.Value) []byte
- func AppendFloat32Value(fmter Formatter, b []byte, v reflect.Value) []byte
- func AppendFloat64Value(fmter Formatter, b []byte, v reflect.Value) []byte
- func AppendIntValue(fmter Formatter, b []byte, v reflect.Value) []byte
- func AppendJSONValue(fmter Formatter, b []byte, v reflect.Value) []byte
- func AppendQueryAppender(fmter Formatter, b []byte, app QueryAppender) []byte
- func AppendStringValue(fmter Formatter, b []byte, v reflect.Value) []byte
- func AppendUintValue(fmter Formatter, b []byte, v reflect.Value) []byte
- func DiscoverSQLType(typ reflect.Type) string
- func SetTableNameInflector(fn func(string) string)
- type AfterScanRowHook
- type AppenderFunc
- type BaseDialect
- func (BaseDialect) AppendBool(b []byte, v bool) []byte
- func (BaseDialect) AppendBytes(b, bs []byte) []byte
- func (BaseDialect) AppendJSON(b, jsonb []byte) []byte
- func (BaseDialect) AppendString(b []byte, s string) []byte
- func (BaseDialect) AppendTime(b []byte, tm time.Time) []byte
- func (BaseDialect) AppendUint32(b []byte, n uint32) []byte
- func (BaseDialect) AppendUint64(b []byte, n uint64) []byte
- type BaseModel
- type BeforeAppendModelHook
- type BeforeScanRowHook
- type ColumnsAppender
- type CustomAppender
- type Dialect
- type Field
- func (f *Field) AppendValue(fmter Formatter, b []byte, strct reflect.Value) []byte
- func (f *Field) Clone() *Field
- func (f *Field) HasNilValue(v reflect.Value) bool
- func (f *Field) HasZeroValue(v reflect.Value) bool
- func (f *Field) ScanValue(strct reflect.Value, src interface{}) error
- func (f *Field) ScanWithCheck(fv reflect.Value, src interface{}) error
- func (f *Field) SkipUpdate() bool
- func (f *Field) String() string
- func (f *Field) Value(strct reflect.Value) reflect.Value
- func (f *Field) WithIndex(path []int) *Field
- type Formatter
- func (f Formatter) AppendIdent(b []byte, ident string) []byte
- func (f Formatter) AppendName(b []byte, name string) []byte
- func (f Formatter) AppendQuery(dst []byte, query string, args ...interface{}) []byte
- func (f Formatter) AppendValue(b []byte, v reflect.Value) []byte
- func (f Formatter) Dialect() Dialect
- func (f Formatter) FormatQuery(query string, args ...interface{}) string
- func (f Formatter) HasFeature(feature feature.Feature) bool
- func (f Formatter) IdentQuote() byte
- func (f Formatter) IsNop() bool
- func (f Formatter) WithArg(arg NamedArgAppender) Formatter
- func (f Formatter) WithNamedArg(name string, value interface{}) Formatter
- type Ident
- type IsZeroerFunc
- type Model
- type Name
- type NamedArgAppender
- type NullTime
- type Query
- type QueryAppender
- type QueryWithArgs
- type QueryWithSep
- type Relation
- type Safe
- type ScannerFunc
- type Table
- func (t *Table) AppendNamedArg(fmter Formatter, b []byte, name string, strct reflect.Value) ([]byte, bool)
- func (t *Table) CheckPKs() error
- func (t *Table) Dialect() Dialect
- func (t *Table) Field(name string) (*Field, error)
- func (t *Table) HasAfterScanHook() bool
- func (t *Table) HasAfterScanRowHook() bool
- func (t *Table) HasBeforeAppendModelHook() bool
- func (t *Table) HasBeforeScanHook() bool
- func (t *Table) HasBeforeScanRowHook() bool
- func (t *Table) HasField(name string) bool
- func (t *Table) LookupField(name string) *Field
- func (t *Table) String() string
- type Tables
Constants ¶
const ( InvalidRelation = iota HasOneRelation BelongsToRelation HasManyRelation ManyToManyRelation )
Variables ¶
This section is empty.
Functions ¶
func AppendBoolValue ¶ added in v0.1.6
func AppendFloat32Value ¶ added in v0.1.6
func AppendFloat64Value ¶ added in v0.1.6
func AppendJSONValue ¶ added in v0.3.4
func AppendQueryAppender ¶
func AppendQueryAppender(fmter Formatter, b []byte, app QueryAppender) []byte
func AppendStringValue ¶ added in v0.3.4
func DiscoverSQLType ¶ added in v0.1.17
func SetTableNameInflector ¶
SetTableNameInflector overrides the default func that pluralizes model name to get table name, e.g. my_article becomes my_articles.
Types ¶
type AfterScanRowHook ¶ added in v1.0.13
type AppenderFunc ¶
func FieldAppender ¶
func FieldAppender(dialect Dialect, field *Field) AppenderFunc
func PtrAppender ¶ added in v1.0.3
func PtrAppender(fn AppenderFunc) AppenderFunc
type BaseDialect ¶ added in v1.0.14
type BaseDialect struct{}
func (BaseDialect) AppendBool ¶ added in v1.1.9
func (BaseDialect) AppendBool(b []byte, v bool) []byte
func (BaseDialect) AppendBytes ¶ added in v1.0.14
func (BaseDialect) AppendBytes(b, bs []byte) []byte
func (BaseDialect) AppendJSON ¶ added in v1.0.14
func (BaseDialect) AppendJSON(b, jsonb []byte) []byte
func (BaseDialect) AppendString ¶ added in v1.0.17
func (BaseDialect) AppendString(b []byte, s string) []byte
func (BaseDialect) AppendTime ¶ added in v1.0.14
func (BaseDialect) AppendTime(b []byte, tm time.Time) []byte
func (BaseDialect) AppendUint32 ¶ added in v1.0.14
func (BaseDialect) AppendUint32(b []byte, n uint32) []byte
func (BaseDialect) AppendUint64 ¶ added in v1.0.14
func (BaseDialect) AppendUint64(b []byte, n uint64) []byte
type BeforeAppendModelHook ¶ added in v1.0.13
type BeforeScanRowHook ¶ added in v1.0.13
type ColumnsAppender ¶
type CustomAppender ¶ added in v0.3.4
type CustomAppender func(typ reflect.Type) AppenderFunc
type Dialect ¶
type Dialect interface { Init(db *sql.DB) Name() dialect.Name Features() feature.Feature Tables() *Tables OnTable(table *Table) IdentQuote() byte AppendUint32(b []byte, n uint32) []byte AppendUint64(b []byte, n uint64) []byte AppendTime(b []byte, tm time.Time) []byte AppendString(b []byte, s string) []byte AppendBytes(b []byte, bs []byte) []byte AppendJSON(b, jsonb []byte) []byte AppendBool(b []byte, v bool) []byte // AppendSequence adds the appropriate instruction for the driver to create a sequence // from which (autoincremented) values for the column will be generated. AppendSequence(b []byte, t *Table, f *Field) []byte // DefaultVarcharLen should be returned for dialects in which specifying VARCHAR length // is mandatory in queries that modify the schema (CREATE TABLE / ADD COLUMN, etc). // Dialects that do not have such requirement may return 0, which should be interpreted so by the caller. DefaultVarcharLen() int // DefaultSchema should returns the name of the default database schema. DefaultSchema() string }
type Field ¶
type Field struct { StructField reflect.StructField IsPtr bool Tag tagparser.Tag IndirectType reflect.Type Index []int Name string // SQL name, .e.g. id SQLName Safe // escaped SQL name, e.g. "id" GoName string // struct field name, e.g. Id DiscoveredSQLType string UserSQLType string CreateTableSQLType string SQLDefault string OnDelete string OnUpdate string IsPK bool NotNull bool NullZero bool AutoIncrement bool Identity bool Append AppenderFunc Scan ScannerFunc IsZero IsZeroerFunc }
func (*Field) AppendValue ¶
func (*Field) ScanWithCheck ¶
func (*Field) SkipUpdate ¶ added in v1.1.6
type Formatter ¶
type Formatter struct {
// contains filtered or unexported fields
}
func NewFormatter ¶
func NewNopFormatter ¶
func NewNopFormatter() Formatter
func (Formatter) AppendName ¶ added in v1.1.15
func (Formatter) AppendQuery ¶
func (Formatter) FormatQuery ¶
func (Formatter) IdentQuote ¶
func (Formatter) WithArg ¶
func (f Formatter) WithArg(arg NamedArgAppender) Formatter
func (Formatter) WithNamedArg ¶ added in v0.4.3
type Ident ¶
type Ident string
Ident represents a SQL identifier, for example, a fully qualified column name such as `table_name.col_name`.
type IsZeroerFunc ¶
type Name ¶ added in v1.1.15
type Name string
Name represents a single SQL name, for example, a column name.
type NamedArgAppender ¶ added in v0.4.0
type NullTime ¶ added in v0.1.17
NullTime is a time.Time wrapper that marshals zero time as JSON null and SQL NULL.
func (NullTime) AppendQuery ¶ added in v0.1.17
func (NullTime) MarshalJSON ¶ added in v0.1.17
func (*NullTime) UnmarshalJSON ¶ added in v0.1.17
type Query ¶ added in v1.0.5
type Query interface { QueryAppender Operation() string GetModel() Model GetTableName() string }
type QueryAppender ¶
func In ¶ added in v1.1.2
func In(slice interface{}) QueryAppender
func NullZero ¶ added in v1.1.15
func NullZero(value interface{}) QueryAppender
type QueryWithArgs ¶
type QueryWithArgs struct { Query string Args []interface{} }
func SafeQuery ¶
func SafeQuery(query string, args []interface{}) QueryWithArgs
func UnsafeIdent ¶
func UnsafeIdent(ident string) QueryWithArgs
func (QueryWithArgs) AppendQuery ¶
func (q QueryWithArgs) AppendQuery(fmter Formatter, b []byte) ([]byte, error)
func (QueryWithArgs) IsZero ¶
func (q QueryWithArgs) IsZero() bool
type QueryWithSep ¶
type QueryWithSep struct { QueryWithArgs Sep string }
func SafeQueryWithSep ¶
func SafeQueryWithSep(query string, args []interface{}, sep string) QueryWithSep
type Relation ¶
type Relation struct { Type int Field *Field JoinTable *Table BasePKs []*Field JoinPKs []*Field OnUpdate string OnDelete string Condition []string PolymorphicField *Field PolymorphicValue string M2MTable *Table M2MBasePKs []*Field M2MJoinPKs []*Field }
func (*Relation) References ¶ added in v1.1.17
References returns true if the table to which the Relation belongs needs to declare a foreign key constraint to create the relation. For other relations, the constraint is created in either the referencing table (1:N, 'has-many' relations) or a mapping table (N:N, 'm2m' relations).
type ScannerFunc ¶
func FieldScanner ¶
func FieldScanner(dialect Dialect, field *Field) ScannerFunc
func PtrScanner ¶ added in v1.0.3
func PtrScanner(fn ScannerFunc) ScannerFunc
func Scanner ¶
func Scanner(typ reflect.Type) ScannerFunc
type Table ¶
type Table struct { Type reflect.Type ZeroValue reflect.Value // reflect.Struct ZeroIface interface{} // struct pointer TypeName string ModelName string Schema string Name string SQLName Safe SQLNameForSelects Safe Alias string SQLAlias Safe Fields []*Field // PKs + DataFields PKs []*Field DataFields []*Field FieldMap map[string]*Field StructMap map[string]*structField Relations map[string]*Relation Unique map[string][]*Field SoftDeleteField *Field UpdateSoftDeleteField func(fv reflect.Value, tm time.Time) error // contains filtered or unexported fields }
Table represents a SQL table created from Go struct.
func (*Table) AppendNamedArg ¶ added in v0.4.3
func (*Table) HasAfterScanHook ¶
DEPRECATED. Use HasAfterScanRowHook.
func (*Table) HasAfterScanRowHook ¶ added in v1.0.13
func (*Table) HasBeforeAppendModelHook ¶ added in v1.0.13
func (*Table) HasBeforeScanHook ¶
DEPRECATED. Use HasBeforeScanRowHook.