Documentation
¶
Index ¶
- func AddSqlKeyword(keyword string)
- func GetRegisteredTablesName() []string
- type ColumnInsertSpec
- type ColumnMetadata
- type ColumnMetadataBuilder
- type ColumnSelectSpec
- type GenericColumnToUse
- func (c GenericColumnToUse) EqualsToCurrent() string
- func (c GenericColumnToUse) Excluded() string
- func (c GenericColumnToUse) FromCoalesceWithExcluded() string
- func (c GenericColumnToUse) FromExcluded() string
- func (c GenericColumnToUse) Gin2DimensionalByteArrayContains(argumentNumber int) string
- func (c GenericColumnToUse) GinStringArrayContains(argumentNumber int) string
- func (c GenericColumnToUse) Greatest() string
- func (c GenericColumnToUse) InNumbers(numbers ...int) string
- func (c GenericColumnToUse) Least() string
- func (c GenericColumnToUse) NameOnly() string
- func (c GenericColumnToUse) NameWithTableName() string
- type GenericTableToUse
- type JoinType
- type OptionalTransform_ColumnSelectSpec
- type OrderType
- type Pagination
- type QueryArg_ColumnSelectSpec
- type ResultColumnSelectSpec
- type ScannedRows
- type SqlBuilder
- func (b *SqlBuilder) And(whereTokens ...any) *SqlBuilder
- func (b *SqlBuilder) AnyWhereTokens() bool
- func (b *SqlBuilder) Args(whereArgs ...any) *SqlBuilder
- func (b *SqlBuilder) Build() (sql string, args []any)
- func (b *SqlBuilder) DoNothing() *SqlBuilder
- func (b *SqlBuilder) DoUpdate(tokens ...any) *SqlBuilder
- func (b *SqlBuilder) DoUpdateExceptPrimaryKeys() *SqlBuilder
- func (b *SqlBuilder) Exec(sqlDB *sql.DB) (sql.Result, error)
- func (b *SqlBuilder) ExecContext(ctx context.Context, sqlTx *sql.Tx) (sql.Result, error)
- func (b *SqlBuilder) From(tables ...GenericTableToUse) *SqlBuilder
- func (b *SqlBuilder) Join(joinType JoinType, joinOnTable GenericTableToUse, ...) *SqlBuilder
- func (b *SqlBuilder) Limit(limit uint) *SqlBuilder
- func (b *SqlBuilder) Offset(offset uint) *SqlBuilder
- func (b *SqlBuilder) OnConflict(columns ...GenericColumnToUse) *SqlBuilder
- func (b *SqlBuilder) Or(whereTokens ...any) *SqlBuilder
- func (b *SqlBuilder) OrderBy(column GenericColumnToUse, asc OrderType) *SqlBuilder
- func (b *SqlBuilder) Pagination(pagination *Pagination) *SqlBuilder
- func (b *SqlBuilder) Query(sqlDB *sql.DB) (*ScannedRows, error)
- func (b *SqlBuilder) QueryCount(sqlDB *sql.DB) (count int, err error)
- func (b *SqlBuilder) QueryCountWithContext(ctx context.Context, sqlTx *sql.Tx) (count int, err error)
- func (b *SqlBuilder) QueryExists(sqlDB *sql.DB) (exists bool, err error)
- func (b *SqlBuilder) QueryExistsWithContext(ctx context.Context, sqlTx *sql.Tx) (exists bool, err error)
- func (b *SqlBuilder) QueryWithContext(ctx context.Context, sqlTx *sql.Tx) (*ScannedRows, error)
- func (b *SqlBuilder) Select(columns ...GenericColumnToUse) *SqlBuilder
- func (b *SqlBuilder) ThenBy(column GenericColumnToUse, asc OrderType) *SqlBuilder
- func (b *SqlBuilder) Values(values ...any) *SqlBuilder
- func (b *SqlBuilder) Where(whereTokens ...any) *SqlBuilder
- type SqlRows
- type TableMetadata
- func (t TableMetadata[T]) Columns() []ColumnMetadata[T]
- func (t TableMetadata[T]) ColumnsName() []string
- func (t TableMetadata[T]) MustGetColumnByName(name string) ColumnMetadata[T]
- func (t TableMetadata[T]) Name() string
- func (t TableMetadata[T]) NewRow() T
- func (t TableMetadata[T]) PrimaryKeyColumns() []ColumnMetadata[T]
- type TableMetadataBuildOption
- type TableMetadataBuilder
- type TableToUse
- func (t *TableToUse[T]) Alias(alias string) *TableToUse[T]
- func (t *TableToUse[T]) As(name string) *TableToUse[T]
- func (t *TableToUse[T]) Col(column string) GenericColumnToUse
- func (t *TableToUse[T]) Column(column string) GenericColumnToUse
- func (t *TableToUse[T]) Columns(columns ...string) []GenericColumnToUse
- func (t *TableToUse[T]) ColumnsExcept(exceptColumns ...string) []GenericColumnToUse
- func (t *TableToUse[T]) Metadata() TableMetadata[T]
- func (t *TableToUse[T]) PrimaryKeyColumns() []GenericColumnToUse
- func (t *TableToUse[T]) ReadAllFromRows(scanner *ScannedRows) []T
- func (t *TableToUse[T]) ReadFromRow(scanner *ScannedRows) T
- func (t *TableToUse[T]) Seal() *TableToUse[T]
- func (t *TableToUse[T]) ValueToAny(value T) any
- func (t *TableToUse[T]) ValuesToAny(values []T) []any
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddSqlKeyword ¶
func AddSqlKeyword(keyword string)
AddSqlKeyword adds a SQL keyword to be double-quoted when used as table or column name.
func GetRegisteredTablesName ¶
func GetRegisteredTablesName() []string
Types ¶
type ColumnInsertSpec ¶
type ColumnMetadata ¶
type ColumnMetadata[T any] struct { // contains filtered or unexported fields }
func (ColumnMetadata[T]) InsertSpec ¶
func (c ColumnMetadata[T]) InsertSpec() (columnName string, spec ColumnInsertSpec[T])
func (ColumnMetadata[T]) Name ¶
func (c ColumnMetadata[T]) Name() string
func (ColumnMetadata[T]) SelectSpec ¶
func (c ColumnMetadata[T]) SelectSpec() (columnName string, spec ColumnSelectSpec[T])
type ColumnMetadataBuilder ¶
type ColumnMetadataBuilder[T any] struct { // contains filtered or unexported fields }
func NewColumnMetadata ¶
func NewColumnMetadata[T any]( name string, ) *ColumnMetadataBuilder[T]
func (*ColumnMetadataBuilder[T]) InsertSpec ¶
func (b *ColumnMetadataBuilder[T]) InsertSpec(spec ColumnInsertSpec[T]) *ColumnMetadataBuilder[T]
InsertSpec sets the insert spec for this column
func (*ColumnMetadataBuilder[T]) PrimaryKey ¶
func (b *ColumnMetadataBuilder[T]) PrimaryKey() *ColumnMetadataBuilder[T]
PrimaryKey marks this column is a part of multi-columns-PK
func (*ColumnMetadataBuilder[T]) SelectSpec ¶
func (b *ColumnMetadataBuilder[T]) SelectSpec(spec ColumnSelectSpec[T]) *ColumnMetadataBuilder[T]
SelectSpec sets the select spec for this column
type ColumnSelectSpec ¶
type ColumnSelectSpec[T any] func(*T) ResultColumnSelectSpec
type GenericColumnToUse ¶
type GenericColumnToUse struct {
// contains filtered or unexported fields
}
func (GenericColumnToUse) EqualsToCurrent ¶
func (c GenericColumnToUse) EqualsToCurrent() string
EqualsToCurrent generates statement '[column] = [table].[column]', used in ON CONFLICT DO UPDATE
func (GenericColumnToUse) Excluded ¶
func (c GenericColumnToUse) Excluded() string
Excluded returns excluded.[column]
func (GenericColumnToUse) FromCoalesceWithExcluded ¶
func (c GenericColumnToUse) FromCoalesceWithExcluded() string
FromCoalesceWithExcluded generates statement '[column] = COALESCE([table].[column], excluded.[column])', used in ON CONFLICT DO UPDATE
func (GenericColumnToUse) FromExcluded ¶
func (c GenericColumnToUse) FromExcluded() string
FromExcluded generates statement '[column] = excluded.[column]', used in ON CONFLICT DO UPDATE
func (GenericColumnToUse) Gin2DimensionalByteArrayContains ¶
func (c GenericColumnToUse) Gin2DimensionalByteArrayContains(argumentNumber int) string
Gin2DimensionalByteArrayContains generates statement '[column] @> ARRAY[$1]::BYTEA[]'
func (GenericColumnToUse) GinStringArrayContains ¶
func (c GenericColumnToUse) GinStringArrayContains(argumentNumber int) string
GinStringArrayContains generates statement '[column] @> ARRAY[$1]::TEXT[]'
func (GenericColumnToUse) Greatest ¶
func (c GenericColumnToUse) Greatest() string
Greatest generates statement '[column] = GREATEST([table].[column], excluded.[column])', used in ON CONFLICT DO UPDATE
func (GenericColumnToUse) InNumbers ¶
func (c GenericColumnToUse) InNumbers(numbers ...int) string
InNumbers generates statement '[column] IN (1,2,3)'
func (GenericColumnToUse) Least ¶
func (c GenericColumnToUse) Least() string
Least generates statement '[column] = LEAST([table].[column], excluded.[column])', used in ON CONFLICT DO UPDATE
func (GenericColumnToUse) NameOnly ¶
func (c GenericColumnToUse) NameOnly() string
NameOnly returns [column]
func (GenericColumnToUse) NameWithTableName ¶
func (c GenericColumnToUse) NameWithTableName() string
NameWithTableName returns [table].[column]
type GenericTableToUse ¶
type GenericTableToUse interface {
// contains filtered or unexported methods
}
type OptionalTransform_ColumnSelectSpec ¶
type OptionalTransform_ColumnSelectSpec func() error
type Pagination ¶
type Pagination struct {
// contains filtered or unexported fields
}
func NewPaginationFromPagingConfig ¶
func NewPaginationFromPagingConfig(page, size int) *Pagination
func (*Pagination) Limit ¶
func (p *Pagination) Limit() uint
func (*Pagination) Offset ¶
func (p *Pagination) Offset() uint
func (*Pagination) Set ¶
func (p *Pagination) Set(offset, limit uint)
type QueryArg_ColumnSelectSpec ¶
type QueryArg_ColumnSelectSpec func() any
type ResultColumnSelectSpec ¶
type ResultColumnSelectSpec struct {
ToQueryArg QueryArg_ColumnSelectSpec
OptionalTransform OptionalTransform_ColumnSelectSpec
}
type ScannedRows ¶
type ScannedRows struct {
// contains filtered or unexported fields
}
func (*ScannedRows) Count ¶
func (sr *ScannedRows) Count() int
func (*ScannedRows) GetTable ¶
func (sr *ScannedRows) GetTable(byAlias string) any
func (*ScannedRows) Next ¶
func (sr *ScannedRows) Next() bool
type SqlBuilder ¶
type SqlBuilder struct {
// contains filtered or unexported fields
}
func InsertInto ¶
func InsertInto[T any](use *TableToUse[T], columns ...GenericColumnToUse) *SqlBuilder
func Select ¶
func Select(selectColumns ...GenericColumnToUse) *SqlBuilder
func SelectCount ¶
func SelectCount() *SqlBuilder
func SelectExists ¶
func SelectExists() *SqlBuilder
func (*SqlBuilder) And ¶
func (b *SqlBuilder) And(whereTokens ...any) *SqlBuilder
And continues the WHERE clause with AND.
func (*SqlBuilder) AnyWhereTokens ¶
func (b *SqlBuilder) AnyWhereTokens() bool
func (*SqlBuilder) Args ¶
func (b *SqlBuilder) Args(whereArgs ...any) *SqlBuilder
Args provides args for the WHERE clause.
func (*SqlBuilder) Build ¶
func (b *SqlBuilder) Build() (sql string, args []any)
func (*SqlBuilder) DoNothing ¶
func (b *SqlBuilder) DoNothing() *SqlBuilder
DoNothing adds the ON CONFLICT DO NOTHING clause.
func (*SqlBuilder) DoUpdate ¶
func (b *SqlBuilder) DoUpdate(tokens ...any) *SqlBuilder
DoUpdate adds the ON CONFLICT UPDATE clause.
func (*SqlBuilder) DoUpdateExceptPrimaryKeys ¶
func (b *SqlBuilder) DoUpdateExceptPrimaryKeys() *SqlBuilder
DoUpdateExceptPrimaryKeys adds the ON CONFLICT UPDATE clause to excluded, except the primary keys.
func (*SqlBuilder) ExecContext ¶
func (*SqlBuilder) From ¶
func (b *SqlBuilder) From(tables ...GenericTableToUse) *SqlBuilder
From specifies the tables to SELECT FROM
func (*SqlBuilder) Join ¶
func (b *SqlBuilder) Join(joinType JoinType, joinOnTable GenericTableToUse, onKeyPairs ...GenericColumnToUse) *SqlBuilder
Join add JOIN...ON clause.
func (*SqlBuilder) Limit ¶
func (b *SqlBuilder) Limit(limit uint) *SqlBuilder
func (*SqlBuilder) Offset ¶
func (b *SqlBuilder) Offset(offset uint) *SqlBuilder
func (*SqlBuilder) OnConflict ¶
func (b *SqlBuilder) OnConflict(columns ...GenericColumnToUse) *SqlBuilder
OnConflict adds the ON CONFLICT clause with the columns to be checked.
func (*SqlBuilder) Or ¶
func (b *SqlBuilder) Or(whereTokens ...any) *SqlBuilder
Or continues the WHERE clause with OR.
func (*SqlBuilder) OrderBy ¶
func (b *SqlBuilder) OrderBy(column GenericColumnToUse, asc OrderType) *SqlBuilder
OrderBy adds the ORDER BY clause.
func (*SqlBuilder) Pagination ¶
func (b *SqlBuilder) Pagination(pagination *Pagination) *SqlBuilder
Pagination adds the OFFSET and LIMIT clauses if the pagination is not nil and the values are greater than 0.
func (*SqlBuilder) Query ¶
func (b *SqlBuilder) Query(sqlDB *sql.DB) (*ScannedRows, error)
func (*SqlBuilder) QueryCount ¶
func (b *SqlBuilder) QueryCount(sqlDB *sql.DB) (count int, err error)
func (*SqlBuilder) QueryCountWithContext ¶
func (*SqlBuilder) QueryExists ¶
func (b *SqlBuilder) QueryExists(sqlDB *sql.DB) (exists bool, err error)
func (*SqlBuilder) QueryExistsWithContext ¶
func (*SqlBuilder) QueryWithContext ¶
func (b *SqlBuilder) QueryWithContext(ctx context.Context, sqlTx *sql.Tx) (*ScannedRows, error)
func (*SqlBuilder) Select ¶
func (b *SqlBuilder) Select(columns ...GenericColumnToUse) *SqlBuilder
Select adds more columns to the SELECT statement.
func (*SqlBuilder) ThenBy ¶
func (b *SqlBuilder) ThenBy(column GenericColumnToUse, asc OrderType) *SqlBuilder
ThenBy continues the ORDER BY clause with another column.
func (*SqlBuilder) Values ¶
func (b *SqlBuilder) Values(values ...any) *SqlBuilder
Values put the values to be inserted.
func (*SqlBuilder) Where ¶
func (b *SqlBuilder) Where(whereTokens ...any) *SqlBuilder
Where adds the WHERE clause. If having argument on SELECT, need to call Args
type TableMetadata ¶
type TableMetadata[T any] struct { // contains filtered or unexported fields }
func GetTableMetadata ¶
func GetTableMetadata[T any]() TableMetadata[T]
func (TableMetadata[T]) Columns ¶
func (t TableMetadata[T]) Columns() []ColumnMetadata[T]
func (TableMetadata[T]) ColumnsName ¶
func (t TableMetadata[T]) ColumnsName() []string
func (TableMetadata[T]) MustGetColumnByName ¶
func (t TableMetadata[T]) MustGetColumnByName(name string) ColumnMetadata[T]
func (TableMetadata[T]) Name ¶
func (t TableMetadata[T]) Name() string
func (TableMetadata[T]) NewRow ¶
func (t TableMetadata[T]) NewRow() T
NewRow returns new struct of type T
func (TableMetadata[T]) PrimaryKeyColumns ¶
func (t TableMetadata[T]) PrimaryKeyColumns() []ColumnMetadata[T]
type TableMetadataBuildOption ¶
type TableMetadataBuildOption struct {
ExpectedPkColumns []string // used to double-check the primary key columns
}
type TableMetadataBuilder ¶
type TableMetadataBuilder[T any] struct { // contains filtered or unexported fields }
func NewTableMetadata ¶
func NewTableMetadata[T any](name string) *TableMetadataBuilder[T]
func (*TableMetadataBuilder[T]) AddColumns ¶
func (b *TableMetadataBuilder[T]) AddColumns(columns ...*ColumnMetadataBuilder[T]) *TableMetadataBuilder[T]
func (*TableMetadataBuilder[T]) Build ¶
func (b *TableMetadataBuilder[T]) Build(opt TableMetadataBuildOption) TableMetadata[T]
type TableToUse ¶
type TableToUse[T any] struct { // contains filtered or unexported fields }
func (*TableToUse[T]) Alias ¶
func (t *TableToUse[T]) Alias(alias string) *TableToUse[T]
Alias sets the table alias.
func (*TableToUse[T]) As ¶
func (t *TableToUse[T]) As(name string) *TableToUse[T]
As provides a way to alter the table name working on, when using partitioned tables.
func (*TableToUse[T]) Col ¶
func (t *TableToUse[T]) Col(column string) GenericColumnToUse
Col returns column by name.
An alias of Column.
func (*TableToUse[T]) Column ¶
func (t *TableToUse[T]) Column(column string) GenericColumnToUse
Column returns column by name.
func (*TableToUse[T]) Columns ¶
func (t *TableToUse[T]) Columns(columns ...string) []GenericColumnToUse
Columns returns columns by names.
func (*TableToUse[T]) ColumnsExcept ¶
func (t *TableToUse[T]) ColumnsExcept(exceptColumns ...string) []GenericColumnToUse
ColumnsExcept returns columns by names, except the given columns.
func (*TableToUse[T]) Metadata ¶
func (t *TableToUse[T]) Metadata() TableMetadata[T]
func (*TableToUse[T]) PrimaryKeyColumns ¶
func (t *TableToUse[T]) PrimaryKeyColumns() []GenericColumnToUse
func (*TableToUse[T]) ReadAllFromRows ¶
func (t *TableToUse[T]) ReadAllFromRows(scanner *ScannedRows) []T
ReadAllFromRows reads all the table from the scanned rows.
func (*TableToUse[T]) ReadFromRow ¶
func (t *TableToUse[T]) ReadFromRow(scanner *ScannedRows) T
ReadFromRow reads the table from the scanned rows.
func (*TableToUse[T]) Seal ¶
func (t *TableToUse[T]) Seal() *TableToUse[T]
Seal ensures that the table properties already set up correctly and prevent future changes to them.
func (*TableToUse[T]) ValueToAny ¶
func (t *TableToUse[T]) ValueToAny(value T) any
ValueToAny converts value to any.
func (*TableToUse[T]) ValuesToAny ¶
func (t *TableToUse[T]) ValuesToAny(values []T) []any
ValuesToAny converts values to any.