173
vendor/github.com/gocraft/dbr/select_builder.go
generated
vendored
Normal file
173
vendor/github.com/gocraft/dbr/select_builder.go
generated
vendored
Normal file
@@ -0,0 +1,173 @@
|
||||
package dbr
|
||||
|
||||
import "context"
|
||||
|
||||
type SelectBuilder struct {
|
||||
runner
|
||||
EventReceiver
|
||||
Dialect Dialect
|
||||
|
||||
*SelectStmt
|
||||
}
|
||||
|
||||
func prepareSelect(a []string) []interface{} {
|
||||
b := make([]interface{}, len(a))
|
||||
for i := range a {
|
||||
b[i] = a[i]
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
func (sess *Session) Select(column ...string) *SelectBuilder {
|
||||
return &SelectBuilder{
|
||||
runner: sess,
|
||||
EventReceiver: sess,
|
||||
Dialect: sess.Dialect,
|
||||
SelectStmt: Select(prepareSelect(column)...),
|
||||
}
|
||||
}
|
||||
|
||||
func (tx *Tx) Select(column ...string) *SelectBuilder {
|
||||
return &SelectBuilder{
|
||||
runner: tx,
|
||||
EventReceiver: tx,
|
||||
Dialect: tx.Dialect,
|
||||
SelectStmt: Select(prepareSelect(column)...),
|
||||
}
|
||||
}
|
||||
|
||||
func (sess *Session) SelectBySql(query string, value ...interface{}) *SelectBuilder {
|
||||
return &SelectBuilder{
|
||||
runner: sess,
|
||||
EventReceiver: sess,
|
||||
Dialect: sess.Dialect,
|
||||
SelectStmt: SelectBySql(query, value...),
|
||||
}
|
||||
}
|
||||
|
||||
func (tx *Tx) SelectBySql(query string, value ...interface{}) *SelectBuilder {
|
||||
return &SelectBuilder{
|
||||
runner: tx,
|
||||
EventReceiver: tx,
|
||||
Dialect: tx.Dialect,
|
||||
SelectStmt: SelectBySql(query, value...),
|
||||
}
|
||||
}
|
||||
|
||||
// DEPRECATED: use LoadOne instead
|
||||
func (b *SelectBuilder) LoadStruct(value interface{}) error {
|
||||
return b.LoadOne(value)
|
||||
}
|
||||
|
||||
// DEPRECATED: use Load instead
|
||||
func (b *SelectBuilder) LoadStructs(value interface{}) (int, error) {
|
||||
return b.Load(value)
|
||||
}
|
||||
|
||||
// DEPRECATED: use LoadOne instead
|
||||
func (b *SelectBuilder) LoadValue(value interface{}) error {
|
||||
return b.LoadOne(value)
|
||||
}
|
||||
|
||||
// DEPRECATED: use Load instead
|
||||
func (b *SelectBuilder) LoadValues(value interface{}) (int, error) {
|
||||
return b.Load(value)
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) LoadOneContext(ctx context.Context, value interface{}) error {
|
||||
count, err := query(ctx, b.runner, b.EventReceiver, b, b.Dialect, value)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if count == 0 {
|
||||
return ErrNotFound
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) LoadOne(value interface{}) error {
|
||||
return b.LoadOneContext(context.Background(), value)
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) LoadContext(ctx context.Context, value interface{}) (int, error) {
|
||||
return query(ctx, b.runner, b.EventReceiver, b, b.Dialect, value)
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) Load(value interface{}) (int, error) {
|
||||
return b.LoadContext(context.Background(), value)
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) Join(table, on interface{}) *SelectBuilder {
|
||||
b.SelectStmt.Join(table, on)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) LeftJoin(table, on interface{}) *SelectBuilder {
|
||||
b.SelectStmt.LeftJoin(table, on)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) RightJoin(table, on interface{}) *SelectBuilder {
|
||||
b.SelectStmt.RightJoin(table, on)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) FullJoin(table, on interface{}) *SelectBuilder {
|
||||
b.SelectStmt.FullJoin(table, on)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) Distinct() *SelectBuilder {
|
||||
b.SelectStmt.Distinct()
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) From(table interface{}) *SelectBuilder {
|
||||
b.SelectStmt.From(table)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) GroupBy(col ...string) *SelectBuilder {
|
||||
b.SelectStmt.GroupBy(col...)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) Having(query interface{}, value ...interface{}) *SelectBuilder {
|
||||
b.SelectStmt.Having(query, value...)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) Limit(n uint64) *SelectBuilder {
|
||||
b.SelectStmt.Limit(n)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) Offset(n uint64) *SelectBuilder {
|
||||
b.SelectStmt.Offset(n)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) OrderDir(col string, isAsc bool) *SelectBuilder {
|
||||
if isAsc {
|
||||
b.SelectStmt.OrderAsc(col)
|
||||
} else {
|
||||
b.SelectStmt.OrderDesc(col)
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) Paginate(page, perPage uint64) *SelectBuilder {
|
||||
b.Limit(perPage)
|
||||
b.Offset((page - 1) * perPage)
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) OrderBy(col string) *SelectBuilder {
|
||||
b.SelectStmt.Order = append(b.SelectStmt.Order, Expr(col))
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SelectBuilder) Where(query interface{}, value ...interface{}) *SelectBuilder {
|
||||
b.SelectStmt.Where(query, value...)
|
||||
return b
|
||||
}
|
||||
Reference in New Issue
Block a user