github.com/astaxie/beego@v1.12.3/orm/qb.go (about)

     1  // Copyright 2014 beego Author. All Rights Reserved.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package orm
    16  
    17  import "errors"
    18  
    19  // QueryBuilder is the Query builder interface
    20  type QueryBuilder interface {
    21  	Select(fields ...string) QueryBuilder
    22  	ForUpdate() QueryBuilder
    23  	From(tables ...string) QueryBuilder
    24  	InnerJoin(table string) QueryBuilder
    25  	LeftJoin(table string) QueryBuilder
    26  	RightJoin(table string) QueryBuilder
    27  	On(cond string) QueryBuilder
    28  	Where(cond string) QueryBuilder
    29  	And(cond string) QueryBuilder
    30  	Or(cond string) QueryBuilder
    31  	In(vals ...string) QueryBuilder
    32  	OrderBy(fields ...string) QueryBuilder
    33  	Asc() QueryBuilder
    34  	Desc() QueryBuilder
    35  	Limit(limit int) QueryBuilder
    36  	Offset(offset int) QueryBuilder
    37  	GroupBy(fields ...string) QueryBuilder
    38  	Having(cond string) QueryBuilder
    39  	Update(tables ...string) QueryBuilder
    40  	Set(kv ...string) QueryBuilder
    41  	Delete(tables ...string) QueryBuilder
    42  	InsertInto(table string, fields ...string) QueryBuilder
    43  	Values(vals ...string) QueryBuilder
    44  	Subquery(sub string, alias string) string
    45  	String() string
    46  }
    47  
    48  // NewQueryBuilder return the QueryBuilder
    49  func NewQueryBuilder(driver string) (qb QueryBuilder, err error) {
    50  	if driver == "mysql" {
    51  		qb = new(MySQLQueryBuilder)
    52  	} else if driver == "tidb" {
    53  		qb = new(TiDBQueryBuilder)
    54  	} else if driver == "postgres" {
    55  		err = errors.New("postgres query builder is not supported yet")
    56  	} else if driver == "sqlite" {
    57  		err = errors.New("sqlite query builder is not supported yet")
    58  	} else {
    59  		err = errors.New("unknown driver for query builder")
    60  	}
    61  	return
    62  }