Documentation
¶
Index ¶
- Variables
- func ParseTags(tag string) (map[string]string, error)
- func ParseType(t string, nullable bool) (string, error)
- func QueryForBulkInsert[T Model](modelPtrs ...T) (q.Query, error)
- func QueryForInsert(modelPtr Model) (q.Query, *reflect.Value, error)
- func QueryForUpdateModel(updateStructPtr ModelUpdate, where q.Condition) (q.Query, error)
- func Transaction(db *sql.DB, ctx context.Context, opts *sql.TxOptions, ...) error
- func Where(str string, args ...any) q.Condition
- type Column
- type ColumnSplitter
- type DB
- type Executor
- type GenerateOptions
- type Generator
- type Mapper
- type Model
- type ModelMetadata
- type ModelUpdate
- type OpenOptions
- type Parser
- type Saver
- type SerialMapper
- type Table
- type Tx
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrRecordNotFound = xerrors.New("record not found")
Error returned when record not found
Functions ¶
func QueryForUpdateModel ¶
func Transaction ¶
Types ¶
type Column ¶
type Column struct { FieldName string `json:"field_name"` FieldType string `json:"field_type"` FieldIndex int `json:"field_index"` GoFieldType string `json:"go_field_type"` Nullable bool `json:"nullable"` DefaultValue sql.NullString `json:"default_value"` Key sql.NullString `json:"key"` Extra sql.NullString `json:"extra"` }
func (*Column) ParseExtra ¶
func (*Column) UpdateField ¶
type ColumnSplitter ¶
type DB ¶
type DB interface { Saver Mapper // Return *sql.DB instance DB() *sql.DB // Set db object SetDB(db *sql.DB) // Begin transaction and commit. // If error returned from callback, transaction is rolled back. // Internally call tx.BeginTx(context.Background(), nil) Transaction(callback func(tx Tx) error) error // Same as Transaction() // Internally call tx.BeginTx(ctx, opts) TransactionWithContext(ctx context.Context, opts *sql.TxOptions, callback func(tx Tx) error) error // Call db.Close() Close() error }
func Open ¶
func Open(opts *OpenOptions) (DB, error)
type Executor ¶
type Executor interface { Exec(query string, args ...any) (sql.Result, error) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error) Query(query string, args ...any) (*sql.Rows, error) QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error) QueryRow(query string, args ...any) *sql.Row QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row }
An abstraction of sql.DB/sql.Tx
type GenerateOptions ¶
type Generator ¶
type Generator interface {
Generate(opts *GenerateOptions) error
}
func NewGenerator ¶
type Mapper ¶
type Mapper interface { // Read single row and map columns to destination. // pointerOfStruct MUST BE a pointer of struct. // It closes rows after mapping regardless error occurred. // example: // var user User // err := m.Map(rows, &user) Map(rows *sql.Rows, pointerOfStruct interface{}) error // Read all rows and map columns for each destination. // pointerOfSliceOfStruct MUST BE a pointer of slices of pointer of struct. // It closes rows after mapping regardless error occurred. // example: // var users []*Users // m.MapMany(rows, &users) MapMany(rows *sql.Rows, pointerOfSliceOfStruct interface{}) error }
type ModelMetadata ¶
type ModelMetadata struct { TableName string AutoIncrementField *reflect.Value Values q.KeyIterator }
func AggregateModelMetadata ¶
func AggregateModelMetadata(modelPtr Model) (*ModelMetadata, error)
type ModelUpdate ¶
type ModelUpdate interface {
UpdateTableName() string
}
type OpenOptions ¶
type Saver ¶
type Saver interface { Insert(structPtr Model) (sql.Result, error) InsertContext(ctx context.Context, structPtr Model) (sql.Result, error) Update(table string, set map[string]any, where q.Condition) (sql.Result, error) UpdateModel(updaterStructPtr ModelUpdate, where q.Condition) (sql.Result, error) UpdateContext(ctx context.Context, table string, set map[string]any, where q.Condition) (sql.Result, error) UpdateModelContext(ctx context.Context, updaterStructPtr ModelUpdate, where q.Condition) (sql.Result, error) Delete(table string, where q.Condition) (sql.Result, error) DeleteContext(ctx context.Context, table string, where q.Condition) (sql.Result, error) Exec(query q.Query) (sql.Result, error) ExecContext(ctx context.Context, query q.Query) (sql.Result, error) Query(query q.Query) (*sql.Rows, error) QueryContext(ctx context.Context, query q.Query) (*sql.Rows, error) QueryRow(query q.Query) (*sql.Row, error) QueryRowContext(ctx context.Context, query q.Query) (*sql.Row, error) }
type SerialMapper ¶
type SerialMapper interface { // Read joined rows and map columns for each destination serially. // pointerOfStruct MUST BE a pointer of struct // NOTE: It WON'T close rows automatically. Close rows manually. // example: // var user User // var favorite UserFavorite // err := m.Map(rows, &user, &favorite) Map(rows *sql.Rows, pointersOfStruct ...interface{}) error }
func NewSerialMapper ¶
func NewSerialMapper(s ColumnSplitter) SerialMapper
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
mocks
|
|
mock_exql
Package mock_exql is a generated GoMock package.
|
Package mock_exql is a generated GoMock package. |
mock_query
Package mock_query is a generated GoMock package.
|
Package mock_query is a generated GoMock package. |
This file is generated by exql.
|
This file is generated by exql. |
tool
|
|
Click to show internal directories.
Click to hide internal directories.