39 lines
1.3 KiB
Go
39 lines
1.3 KiB
Go
// Copyright 2016 Qiang Xue. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package dbx
|
|
|
|
// StandardBuilder is the builder that is used by DB for an unknown driver.
|
|
type StandardBuilder struct {
|
|
*BaseBuilder
|
|
qb *BaseQueryBuilder
|
|
}
|
|
|
|
var _ Builder = &StandardBuilder{}
|
|
|
|
// NewStandardBuilder creates a new StandardBuilder instance.
|
|
func NewStandardBuilder(db *DB, executor Executor) Builder {
|
|
return &StandardBuilder{
|
|
NewBaseBuilder(db, executor),
|
|
NewBaseQueryBuilder(db),
|
|
}
|
|
}
|
|
|
|
// QueryBuilder returns the query builder supporting the current DB.
|
|
func (b *StandardBuilder) QueryBuilder() QueryBuilder {
|
|
return b.qb
|
|
}
|
|
|
|
// Select returns a new SelectQuery object that can be used to build a SELECT statement.
|
|
// The parameters to this method should be the list column names to be selected.
|
|
// A column name may have an optional alias name. For example, Select("id", "my_name AS name").
|
|
func (b *StandardBuilder) Select(cols ...string) *SelectQuery {
|
|
return NewSelectQuery(b, b.db).Select(cols...)
|
|
}
|
|
|
|
// Model returns a new ModelQuery object that can be used to perform model-based DB operations.
|
|
// The model passed to this method should be a pointer to a model struct.
|
|
func (b *StandardBuilder) Model(model interface{}) *ModelQuery {
|
|
return NewModelQuery(model, b.db.FieldMapper, b.db, b)
|
|
}
|