Documentation ¶
Overview ¶
Package sqlbuilder is a SQL-query builder for golang. This supports you using relational database with more readable and flexible code than raw SQL query string.
See https://github.com/umisama/go-sqlbuilder for more infomation.
Index ¶
- func SetDialect(opt Dialect)
- type AlterTableStatement
- func (b *AlterTableStatement) AddColumn(col ColumnConfig) *AlterTableStatement
- func (b *AlterTableStatement) AddColumnAfter(col ColumnConfig, after Column) *AlterTableStatement
- func (b *AlterTableStatement) AddColumnFirst(col ColumnConfig) *AlterTableStatement
- func (b *AlterTableStatement) ApplyToTable() error
- func (b *AlterTableStatement) ChangeColumn(old_column Column, new_column ColumnConfig) *AlterTableStatement
- func (b *AlterTableStatement) ChangeColumnAfter(old_column Column, new_column ColumnConfig, after Column) *AlterTableStatement
- func (b *AlterTableStatement) ChangeColumnFirst(old_column Column, new_column ColumnConfig) *AlterTableStatement
- func (b *AlterTableStatement) DropColumn(col Column) *AlterTableStatement
- func (b *AlterTableStatement) RenameTo(name string) *AlterTableStatement
- func (b *AlterTableStatement) ToSql() (query string, args []interface{}, err error)
- type Column
- type ColumnConfig
- func AnyColumn(name string, opt *ColumnOption) ColumnConfig
- func BoolColumn(name string, opt *ColumnOption) ColumnConfig
- func BytesColumn(name string, opt *ColumnOption) ColumnConfig
- func DateColumn(name string, opt *ColumnOption) ColumnConfig
- func FloatColumn(name string, opt *ColumnOption) ColumnConfig
- func IntColumn(name string, opt *ColumnOption) ColumnConfig
- func StringColumn(name string, opt *ColumnOption) ColumnConfig
- type ColumnList
- type ColumnOption
- type ColumnType
- type Condition
- type CreateIndexStatement
- func (b *CreateIndexStatement) Columns(columns ...Column) *CreateIndexStatement
- func (b *CreateIndexStatement) IfNotExists() *CreateIndexStatement
- func (b *CreateIndexStatement) Name(name string) *CreateIndexStatement
- func (b *CreateIndexStatement) ToSql() (query string, args []interface{}, err error)
- type CreateTableStatement
- type DeleteStatement
- type Dialect
- type DropTableStatement
- type InsertStatement
- func (b *InsertStatement) Columns(columns ...Column) *InsertStatement
- func (b *InsertStatement) Returning(column Column) *InsertStatement
- func (b *InsertStatement) Set(column Column, value interface{}) *InsertStatement
- func (b *InsertStatement) ToSql() (query string, args []interface{}, err error)
- func (b *InsertStatement) Values(values ...interface{}) *InsertStatement
- type SelectStatement
- func (b *SelectStatement) Columns(columns ...Column) *SelectStatement
- func (b *SelectStatement) Distinct() *SelectStatement
- func (b *SelectStatement) GroupBy(columns ...Column) *SelectStatement
- func (b *SelectStatement) Having(cond Condition) *SelectStatement
- func (b *SelectStatement) Limit(limit int) *SelectStatement
- func (b *SelectStatement) Offset(offset int) *SelectStatement
- func (b *SelectStatement) OrderBy(desc bool, columns ...Column) *SelectStatement
- func (b *SelectStatement) ToSql() (query string, args []interface{}, err error)
- func (m *SelectStatement) ToSubquery(alias string) Table
- func (b *SelectStatement) Where(cond Condition) *SelectStatement
- type SqlFunc
- type Statement
- type Table
- type TableOption
- type UpdateStatement
- func (b *UpdateStatement) Limit(limit int) *UpdateStatement
- func (b *UpdateStatement) Offset(offset int) *UpdateStatement
- func (b *UpdateStatement) OrderBy(desc bool, columns ...Column) *UpdateStatement
- func (b *UpdateStatement) Set(col Column, val interface{}) *UpdateStatement
- func (b *UpdateStatement) ToSql() (query string, args []interface{}, err error)
- func (b *UpdateStatement) Where(cond Condition) *UpdateStatement
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SetDialect ¶
func SetDialect(opt Dialect)
SetDialect sets dialect for SQL server. Must set dialect at first.
Types ¶
type AlterTableStatement ¶
type AlterTableStatement struct {
// contains filtered or unexported fields
}
func AlterTable ¶
func AlterTable(tbl Table) *AlterTableStatement
func (*AlterTableStatement) AddColumn ¶
func (b *AlterTableStatement) AddColumn(col ColumnConfig) *AlterTableStatement
func (*AlterTableStatement) AddColumnAfter ¶
func (b *AlterTableStatement) AddColumnAfter(col ColumnConfig, after Column) *AlterTableStatement
func (*AlterTableStatement) AddColumnFirst ¶
func (b *AlterTableStatement) AddColumnFirst(col ColumnConfig) *AlterTableStatement
func (*AlterTableStatement) ApplyToTable ¶
func (b *AlterTableStatement) ApplyToTable() error
func (*AlterTableStatement) ChangeColumn ¶
func (b *AlterTableStatement) ChangeColumn(old_column Column, new_column ColumnConfig) *AlterTableStatement
func (*AlterTableStatement) ChangeColumnAfter ¶
func (b *AlterTableStatement) ChangeColumnAfter(old_column Column, new_column ColumnConfig, after Column) *AlterTableStatement
func (*AlterTableStatement) ChangeColumnFirst ¶
func (b *AlterTableStatement) ChangeColumnFirst(old_column Column, new_column ColumnConfig) *AlterTableStatement
func (*AlterTableStatement) DropColumn ¶
func (b *AlterTableStatement) DropColumn(col Column) *AlterTableStatement
func (*AlterTableStatement) RenameTo ¶
func (b *AlterTableStatement) RenameTo(name string) *AlterTableStatement
func (*AlterTableStatement) ToSql ¶
func (b *AlterTableStatement) ToSql() (query string, args []interface{}, err error)
type Column ¶
type Column interface { // As creates Column alias. As(alias string) Column // Eq creates Condition for "column==right". Type for right is column's one or other Column. Eq(right interface{}) Condition // NotEq creates Condition for "column<>right". Type for right is column's one or other Column. NotEq(right interface{}) Condition // GtEq creates Condition for "column>right". Type for right is column's one or other Column. Gt(right interface{}) Condition // GtEq creates Condition for "column>=right". Type for right is column's one or other Column. GtEq(right interface{}) Condition // Lt creates Condition for "column<right". Type for right is column's one or other Column. Lt(right interface{}) Condition // LtEq creates Condition for "column<=right". Type for right is column's one or other Column. LtEq(right interface{}) Condition // Like creates Condition for "column LIKE right". Type for right is column's one or other Column. Like(right string) Condition // Between creates Condition for "column BETWEEN lower AND higher". Type for lower/higher is int or time.Time. Between(lower, higher interface{}) Condition // In creates Condition for "column IN (values[0], values[1] ...)". Type for values is column's one or other Column. In(values ...interface{}) Condition // IntersectJSON creates Condition for "column @> value". The value is a JSON string. IntersectJSON(data string) Condition // NotIn creates Condition for "column NOT IN (values[0], values[1] ...)". Type for values is column's one or other Column. NotIn(values ...interface{}) Condition // contains filtered or unexported methods }
Column represents a table column.
type ColumnConfig ¶
type ColumnConfig interface { Name() string Type() ColumnType Option() *ColumnOption // contains filtered or unexported methods }
ColumnConfig represents a config for table's column. This has a name, data type and some options.
func AnyColumn ¶
func AnyColumn(name string, opt *ColumnOption) ColumnConfig
AnyColumn creates config for any types.
func BoolColumn ¶
func BoolColumn(name string, opt *ColumnOption) ColumnConfig
BoolColumn creates config for BOOLEAN type column.
func BytesColumn ¶
func BytesColumn(name string, opt *ColumnOption) ColumnConfig
BytesColumn creates config for BLOB type column.
func DateColumn ¶
func DateColumn(name string, opt *ColumnOption) ColumnConfig
DateColumn creates config for DATETIME type column.
func FloatColumn ¶
func FloatColumn(name string, opt *ColumnOption) ColumnConfig
FloatColumn creates config for REAL or FLOAT type column.
func IntColumn ¶
func IntColumn(name string, opt *ColumnOption) ColumnConfig
IntColumn creates config for INTEGER type column.
func StringColumn ¶
func StringColumn(name string, opt *ColumnOption) ColumnConfig
StringColumn creates config for TEXT or VARCHAR type column.
type ColumnOption ¶
type ColumnOption struct { PrimaryKey bool NotNull bool Unique bool AutoIncrement bool Size int SqlType string Default interface{} }
ColumnOption represents option for a column. ex: primary key.
type ColumnType ¶
type ColumnType int
ColumnType reprecents a type of column. Dialects handle this for know column options.
const ( ColumnTypeAny ColumnType = iota ColumnTypeInt ColumnTypeString ColumnTypeDate ColumnTypeFloat ColumnTypeBool ColumnTypeBytes )
func (ColumnType) CapableTypes ¶
func (t ColumnType) CapableTypes() []reflect.Type
func (ColumnType) String ¶
func (t ColumnType) String() string
type Condition ¶
type Condition interface {
// contains filtered or unexported methods
}
Condition represents a condition for WHERE clause and other.
type CreateIndexStatement ¶
type CreateIndexStatement struct {
// contains filtered or unexported fields
}
CreateIndexStatement represents a "CREATE INDEX" statement.
func CreateIndex ¶
func CreateIndex(tbl Table) *CreateIndexStatement
CreateIndex returns new "CREATE INDEX" statement. The table is Table object to create index.
func (*CreateIndexStatement) Columns ¶
func (b *CreateIndexStatement) Columns(columns ...Column) *CreateIndexStatement
IfNotExists sets "IF NOT EXISTS" clause. If not set this, returns error on ToSql().
func (*CreateIndexStatement) IfNotExists ¶
func (b *CreateIndexStatement) IfNotExists() *CreateIndexStatement
IfNotExists sets "IF NOT EXISTS" clause.
func (*CreateIndexStatement) Name ¶
func (b *CreateIndexStatement) Name(name string) *CreateIndexStatement
Name sets name for index. If not set this, auto generated name will be used.
func (*CreateIndexStatement) ToSql ¶
func (b *CreateIndexStatement) ToSql() (query string, args []interface{}, err error)
ToSql generates query string, placeholder arguments, and returns err on errors.
type CreateTableStatement ¶
type CreateTableStatement struct {
// contains filtered or unexported fields
}
CreateTableStatement represents a "CREATE TABLE" statement.
func CreateTable ¶
func CreateTable(tbl Table) *CreateTableStatement
CreateTable returns new "CREATE TABLE" statement. The table is Table object to create.
func (*CreateTableStatement) IfNotExists ¶
func (b *CreateTableStatement) IfNotExists() *CreateTableStatement
IfNotExists sets "IF NOT EXISTS" clause.
func (*CreateTableStatement) ToSql ¶
func (b *CreateTableStatement) ToSql() (query string, args []interface{}, err error)
ToSql generates query string, placeholder arguments, and error.
type DeleteStatement ¶
type DeleteStatement struct {
// contains filtered or unexported fields
}
DeleteStatement represents a DELETE statement.
func Delete ¶
func Delete(from Table) *DeleteStatement
Delete returns new DELETE statement. The table is Table object to delete from.
func (*DeleteStatement) ToSql ¶
func (b *DeleteStatement) ToSql() (query string, args []interface{}, err error)
ToSql generates query string, placeholder arguments, and returns err on errors.
func (*DeleteStatement) Where ¶
func (b *DeleteStatement) Where(cond Condition) *DeleteStatement
Where sets WHERE clause. cond is filter condition.
type Dialect ¶
type Dialect interface { QuerySuffix() string BindVar(i int) string QuoteField(field interface{}) string ColumnTypeToString(ColumnConfig) (string, error) ColumnOptionToString(*ColumnOption) (string, error) TableOptionToString(*TableOption) (string, error) }
Dialect encapsulates behaviors that differ across SQL database.
type DropTableStatement ¶
type DropTableStatement struct {
// contains filtered or unexported fields
}
DeleteTableStatement represents a "DROP TABLE" statement.
func DropTable ¶
func DropTable(tbl Table) *DropTableStatement
DropTable returns new "DROP TABLE" statement. The table is Table object to drop.
func (*DropTableStatement) ToSql ¶
func (b *DropTableStatement) ToSql() (query string, args []interface{}, err error)
ToSql generates query string, placeholder arguments, and returns err on errors.
type InsertStatement ¶
type InsertStatement struct {
// contains filtered or unexported fields
}
InsertStatement represents a INSERT statement.
func Insert ¶
func Insert(into Table) *InsertStatement
Insert returns new INSERT statement. The table is Table object for into.
func (*InsertStatement) Columns ¶
func (b *InsertStatement) Columns(columns ...Column) *InsertStatement
Columns sets columns for insert. This overwrite old results of Columns() or Set(). If not set this, get error on ToSql().
func (*InsertStatement) Returning ¶
func (b *InsertStatement) Returning(column Column) *InsertStatement
func (*InsertStatement) Set ¶
func (b *InsertStatement) Set(column Column, value interface{}) *InsertStatement
Set sets the column and value togeter. Set cannot be called with Columns() or Values() in a statement.
func (*InsertStatement) ToSql ¶
func (b *InsertStatement) ToSql() (query string, args []interface{}, err error)
ToSql generates query string, placeholder arguments, and returns err on errors.
func (*InsertStatement) Values ¶
func (b *InsertStatement) Values(values ...interface{}) *InsertStatement
Values sets VALUES clause. This overwrite old results of Values() or Set().
type SelectStatement ¶
type SelectStatement struct {
// contains filtered or unexported fields
}
SelectStatement represents a SELECT statement.
func Select ¶
func Select(from Table) *SelectStatement
Select returns new SELECT statement with from as FROM clause.
func (*SelectStatement) Columns ¶
func (b *SelectStatement) Columns(columns ...Column) *SelectStatement
Columns set columns for select. Get all columns (use *) if it is not setted.
func (*SelectStatement) Distinct ¶
func (b *SelectStatement) Distinct() *SelectStatement
Distinct sets DISTINCT clause.
func (*SelectStatement) GroupBy ¶
func (b *SelectStatement) GroupBy(columns ...Column) *SelectStatement
GroupBy sets "GROUP BY" clause by the columns.
func (*SelectStatement) Having ¶
func (b *SelectStatement) Having(cond Condition) *SelectStatement
GroupBy sets "HAVING" clause with the cond.
func (*SelectStatement) Limit ¶
func (b *SelectStatement) Limit(limit int) *SelectStatement
Limit sets LIMIT clause.
func (*SelectStatement) Offset ¶
func (b *SelectStatement) Offset(offset int) *SelectStatement
Offset sets OFFSET clause.
func (*SelectStatement) OrderBy ¶
func (b *SelectStatement) OrderBy(desc bool, columns ...Column) *SelectStatement
OrderBy sets "ORDER BY" clause. Use descending order if the desc is true, by the columns.
func (*SelectStatement) ToSql ¶
func (b *SelectStatement) ToSql() (query string, args []interface{}, err error)
ToSql generates query string, placeholder arguments, and returns err on errors.
func (*SelectStatement) ToSubquery ¶
func (m *SelectStatement) ToSubquery(alias string) Table
func (*SelectStatement) Where ¶
func (b *SelectStatement) Where(cond Condition) *SelectStatement
Where sets WHERE clause. The cond is filter condition.
type SqlFunc ¶
type SqlFunc interface { Column // contains filtered or unexported methods }
SqlFunc represents function on SQL(ex:count(*)). This can be use in the same way as Column.
type Table ¶
type Table interface { // As returns a copy of the table with an alias. As(alias string) Table // C returns table's column by the name. C(name string) Column // Name returns table' name. // returns empty if it is joined table or subquery. Name() string // Option returns table's option(table constraint). // returns nil if it is joined table or subquery. Option() *TableOption // Columns returns all columns. Columns() []Column // InnerJoin returns a joined table use with "INNER JOIN" clause. // The joined table can be handled in same way as single table. InnerJoin(Table, Condition) Table // LeftOuterJoin returns a joined table use with "LEFT OUTER JOIN" clause. // The joined table can be handled in same way as single table. LeftOuterJoin(Table, Condition) Table // RightOuterJoin returns a joined table use with "RIGHT OUTER JOIN" clause. // The joined table can be handled in same way as single table. RightOuterJoin(Table, Condition) Table // FullOuterJoin returns a joined table use with "FULL OUTER JOIN" clause. // The joined table can be handled in same way as single table. FullOuterJoin(Table, Condition) Table // contains filtered or unexported methods }
Table represents a table.
func NewTable ¶
func NewTable(name string, option *TableOption, column_configs ...ColumnConfig) Table
NewTable returns a new table named by the name. Specify table columns by the column_config. Panic if column is empty.
type TableOption ¶
type TableOption struct {
Unique [][]string
}
TableOption reprecents constraint of a table.
type UpdateStatement ¶
type UpdateStatement struct {
// contains filtered or unexported fields
}
UpdateStatement represents a UPDATE statement.
func Update ¶
func Update(tbl Table) *UpdateStatement
Update returns new UPDATE statement. The table is Table object to update.
func (*UpdateStatement) Limit ¶
func (b *UpdateStatement) Limit(limit int) *UpdateStatement
Limit sets LIMIT clause.
func (*UpdateStatement) Offset ¶
func (b *UpdateStatement) Offset(offset int) *UpdateStatement
Limit sets OFFSET clause.
func (*UpdateStatement) OrderBy ¶
func (b *UpdateStatement) OrderBy(desc bool, columns ...Column) *UpdateStatement
OrderBy sets "ORDER BY" clause. Use descending order if the desc is true, by the columns.
func (*UpdateStatement) Set ¶
func (b *UpdateStatement) Set(col Column, val interface{}) *UpdateStatement
Set sets SETS clause like col=val. Call many time for update multi columns.
func (*UpdateStatement) ToSql ¶
func (b *UpdateStatement) ToSql() (query string, args []interface{}, err error)
ToSql generates query string, placeholder arguments, and returns err on errors.
func (*UpdateStatement) Where ¶
func (b *UpdateStatement) Where(cond Condition) *UpdateStatement
Where sets WHERE clause. The cond is filter condition.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
package for integration test(go-sqlbuilder)
|
package for integration test(go-sqlbuilder) |