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) 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
// 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) 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 {
// 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) |