Documentation
¶
Index ¶
- type IQueryBuilder
- type QueryBuilder
- func (queryBuilder *QueryBuilder) Distinct() IQueryBuilder
- func (queryBuilder *QueryBuilder) Join(join SelectFromJoin) IQueryBuilder
- func (queryBuilder *QueryBuilder) Limit(limit spansql.LiteralOrParam) IQueryBuilder
- func (queryBuilder *QueryBuilder) Offset(offset spansql.LiteralOrParam) IQueryBuilder
- func (queryBuilder *QueryBuilder) Order(order spansql.Order) IQueryBuilder
- func (queryBuilder *QueryBuilder) Param(name string, value interface{}) spansql.Param
- func (queryBuilder *QueryBuilder) ParamUnique(name string, value interface{}) spansql.Param
- func (queryBuilder *QueryBuilder) Query() *spansql.Query
- func (queryBuilder *QueryBuilder) SQL() (string, map[string]interface{})
- func (queryBuilder *QueryBuilder) Select(_select []spansql.Expr) IQueryBuilder
- func (queryBuilder *QueryBuilder) Table(table spansql.SelectFromTable) IQueryBuilder
- func (queryBuilder *QueryBuilder) Where(expr spansql.BoolExpr) IQueryBuilder
- type SelectFromJoin
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type IQueryBuilder ¶
type IQueryBuilder interface { Distinct() IQueryBuilder Table(table spansql.SelectFromTable) IQueryBuilder Select(_select []spansql.Expr) IQueryBuilder Join(join SelectFromJoin) IQueryBuilder Where(expr spansql.BoolExpr) IQueryBuilder Order(order spansql.Order) IQueryBuilder Limit(limit spansql.LiteralOrParam) IQueryBuilder Offset(offset spansql.LiteralOrParam) IQueryBuilder Param(name string, value interface{}) spansql.Param ParamUnique(name string, value interface{}) spansql.Param Query() *spansql.Query SQL() (string, map[string]interface{}) }
func New ¶
func New() IQueryBuilder
New initalize/setup a new query builder
func main(){ var queryBuilder = query_builder.New() }
type QueryBuilder ¶
type QueryBuilder struct {
// contains filtered or unexported fields
}
func (*QueryBuilder) Distinct ¶
func (queryBuilder *QueryBuilder) Distinct() IQueryBuilder
Distinct discards duplicate rows and returns only the remaining rows. For more informations please see Google Standard SQL distinct specification.
func main(){ var queryBuilder = query_builder.New(). Distinct() // SELECT DISTINCT }
func (*QueryBuilder) Join ¶
func (queryBuilder *QueryBuilder) Join(join SelectFromJoin) IQueryBuilder
Join merges two from_items so that the SELECT clause can query them as one source. For more informations please see Google Standard SQL join specification.
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Todos.Id"), spansql.ID("Places.Name"), }). Table(spansql.SelectFromTable{ Table: "Todos", }). Join(query_builder.SelectFromJoin{ Type: spansql.InnerJoin, LHS: spansql.SelectFromTable{Table: "Places"}, On: spansql.ComparisonOp{Op: spansql.Eq, LHS: spansql.PathExp{"Todos", "Id"}, RHS: spansql.PathExp{"Places.TodoId"}}, }) // SELECT Todos.Id, Places.Name FROM Todos INNER JOIN Places ON Todos.Id = Places.TodoId }
func (*QueryBuilder) Limit ¶
func (queryBuilder *QueryBuilder) Limit(limit spansql.LiteralOrParam) IQueryBuilder
Limit specifies a non-negative count of type INT64, and no more than count rows will be returned. For more informations please see Google Standard SQL limit specification.
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Id"), }). Table(spansql.SelectFromTable{ Table: "Todos", }). Limit(spansql.IntegerLiteral(10)) // SELECT Id FROM Todos LIMIT 10 }
func (*QueryBuilder) Offset ¶
func (queryBuilder *QueryBuilder) Offset(offset spansql.LiteralOrParam) IQueryBuilder
Offset specifies a non-negative number of rows to skip before applying Limit. Limit works without Offset, while Offset gets ignored without Limit For more informations please see Google Standard SQL offset specification.
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Id"), }). Table(spansql.SelectFromTable{ Table: "Todos", }). Limit(spansql.IntegerLiteral(10)). Offset(spansql.IntegerLiteral(10)) // SELECT Id FROM Todos LIMIT 10 OFFSET 10 }
func (*QueryBuilder) Order ¶
func (queryBuilder *QueryBuilder) Order(order spansql.Order) IQueryBuilder
Order specifies a column or expression as the sort criterion for the result set. For more informations please see Google Standard SQL order specification.
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Id"), }). Table(spansql.SelectFromTable{ Table: "Todos", }). Order(spansql.Order{Expr: spansql.ID("Name"), Desc: true}) // SELECT Id FROM Todos ORDER BY Name }
func (*QueryBuilder) Param ¶ added in v0.2.0
func (queryBuilder *QueryBuilder) Param(name string, value interface{}) spansql.Param
Param sets and store query parameters.
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Id"), }). Table(spansql.SelectFromTable{ Table: "Todos", }). Where(spansql.ComparisonOp{Op: spansql.Eq, LHS: spansql.ID("Id"), RHS: query_builder.Param("Id", spansql.IntegerLiteral(1))}) // SELECT Id FROM Todos WHERE Id = @Id }
func (*QueryBuilder) ParamUnique ¶ added in v1.0.0
func (queryBuilder *QueryBuilder) ParamUnique(name string, value interface{}) spansql.Param
ParamUnique sets and store query parameters with a unique name (uuid suffix).
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Id"), }). Table(spansql.SelectFromTable{ Table: "Todos", }). Where(spansql.ComparisonOp{Op: spansql.Eq, LHS: spansql.ID("Id"), RHS: query_builder.ParamUnique("Id", spansql.IntegerLiteral(1))}) // SELECT Id FROM Todos WHERE Id = @Id92730f9147e24499b4b4b02a0939bc06 }
func (*QueryBuilder) Query ¶
func (queryBuilder *QueryBuilder) Query() *spansql.Query
Query resolves all given query parts and returns the filled spansql.Query struct.
func (*QueryBuilder) SQL ¶
func (queryBuilder *QueryBuilder) SQL() (string, map[string]interface{})
SQL returns the query sql statement and all named paramters.
func (*QueryBuilder) Select ¶
func (queryBuilder *QueryBuilder) Select(_select []spansql.Expr) IQueryBuilder
Select defines the columns that the query will return. For more informations please see Google Standard SQL select specification.
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Id"), spansql.ID("Name"), spansql.ID("Content"), }). Table(spansql.SelectFromTable{ Table: "Todos", }) // SELECT Id FROM Todos }
func (*QueryBuilder) Table ¶
func (queryBuilder *QueryBuilder) Table(table spansql.SelectFromTable) IQueryBuilder
Table indicates the table or tables from which to retrieve rows. For more informations please see Google Standard SQL from specification.
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Todos.Id"), spansql.ID("Places.Name"), }). Table(spansql.SelectFromTable{ Table: "Todos", }). Table(spansql.SelectFromTable{ Table: "Places", }) // SELECT Todos.Id, Places.Name FROM Todos, Places }
func (*QueryBuilder) Where ¶
func (queryBuilder *QueryBuilder) Where(expr spansql.BoolExpr) IQueryBuilder
Where filters the results of the FROM clause. For more informations please see Google Standard SQL where specification.
func main(){ var queryBuilder = query_builder.New(). Select([]spansql.Expr{ spansql.ID("Todos.Id"), spansql.ID("Places.Name"), }). Where(spansql.ComparisonOp{Op: spansql.Eq, LHS: spansql.ID("Todos.Id"), RHS: qb.Param("TodosId", spansql.IntegerLiteral(1))}) // SELECT Todos.Id, Places.Name FROM Todos, Places WHERE Todos.Id = @TodosId }
type SelectFromJoin ¶
type SelectFromJoin struct { spansql.SelectFrom Type spansql.JoinType LHS spansql.SelectFrom // Join condition. // At most one of {On,Using} may be set. On spansql.BoolExpr Using []spansql.ID // Hints are suggestions for how to evaluate a join. // https://cloud.google.com/spanner/docs/query-syntax#join-hints Hints map[string]string }
SelectFromJoin is a custom SelectFrom/SelectFromJoin implementation. It does not include the original LHS because it conflicts with the SelectFromTable implementation. RHS is renamed to LHS.
func (SelectFromJoin) SQL ¶
func (selectFromJoin SelectFromJoin) SQL() string
SQL creates a spansql.SelectFromJoin "clone" to remove the LHS implementation. With this spansql is pretty safe to upgrade.