Adding upstream version 1.11.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
40df376a7f
commit
02cacc5b45
37 changed files with 7317 additions and 0 deletions
120
builder_sqlite.go
Normal file
120
builder_sqlite.go
Normal file
|
@ -0,0 +1,120 @@
|
|||
// 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
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// SqliteBuilder is the builder for SQLite databases.
|
||||
type SqliteBuilder struct {
|
||||
*BaseBuilder
|
||||
qb *BaseQueryBuilder
|
||||
}
|
||||
|
||||
var _ Builder = &SqliteBuilder{}
|
||||
|
||||
// NewSqliteBuilder creates a new SqliteBuilder instance.
|
||||
func NewSqliteBuilder(db *DB, executor Executor) Builder {
|
||||
return &SqliteBuilder{
|
||||
NewBaseBuilder(db, executor),
|
||||
NewBaseQueryBuilder(db),
|
||||
}
|
||||
}
|
||||
|
||||
// QueryBuilder returns the query builder supporting the current DB.
|
||||
func (b *SqliteBuilder) 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 *SqliteBuilder) 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 *SqliteBuilder) Model(model interface{}) *ModelQuery {
|
||||
return NewModelQuery(model, b.db.FieldMapper, b.db, b)
|
||||
}
|
||||
|
||||
// QuoteSimpleTableName quotes a simple table name.
|
||||
// A simple table name does not contain any schema prefix.
|
||||
func (b *SqliteBuilder) QuoteSimpleTableName(s string) string {
|
||||
if strings.ContainsAny(s, "`") {
|
||||
return s
|
||||
}
|
||||
return "`" + s + "`"
|
||||
}
|
||||
|
||||
// QuoteSimpleColumnName quotes a simple column name.
|
||||
// A simple column name does not contain any table prefix.
|
||||
func (b *SqliteBuilder) QuoteSimpleColumnName(s string) string {
|
||||
if strings.Contains(s, "`") || s == "*" {
|
||||
return s
|
||||
}
|
||||
return "`" + s + "`"
|
||||
}
|
||||
|
||||
// DropIndex creates a Query that can be used to remove the named index from a table.
|
||||
func (b *SqliteBuilder) DropIndex(table, name string) *Query {
|
||||
sql := fmt.Sprintf("DROP INDEX %v", b.db.QuoteColumnName(name))
|
||||
return b.NewQuery(sql)
|
||||
}
|
||||
|
||||
// TruncateTable creates a Query that can be used to truncate a table.
|
||||
func (b *SqliteBuilder) TruncateTable(table string) *Query {
|
||||
sql := "DELETE FROM " + b.db.QuoteTableName(table)
|
||||
return b.NewQuery(sql)
|
||||
}
|
||||
|
||||
// RenameTable creates a Query that can be used to rename a table.
|
||||
func (b *SqliteBuilder) RenameTable(oldName, newName string) *Query {
|
||||
sql := fmt.Sprintf("ALTER TABLE %v RENAME TO %v", b.db.QuoteTableName(oldName), b.db.QuoteTableName(newName))
|
||||
return b.NewQuery(sql)
|
||||
}
|
||||
|
||||
// AlterColumn creates a Query that can be used to change the definition of a table column.
|
||||
func (b *SqliteBuilder) AlterColumn(table, col, typ string) *Query {
|
||||
q := b.NewQuery("")
|
||||
q.LastError = errors.New("SQLite does not support altering column")
|
||||
return q
|
||||
}
|
||||
|
||||
// AddPrimaryKey creates a Query that can be used to specify primary key(s) for a table.
|
||||
// The "name" parameter specifies the name of the primary key constraint.
|
||||
func (b *SqliteBuilder) AddPrimaryKey(table, name string, cols ...string) *Query {
|
||||
q := b.NewQuery("")
|
||||
q.LastError = errors.New("SQLite does not support adding primary key")
|
||||
return q
|
||||
}
|
||||
|
||||
// DropPrimaryKey creates a Query that can be used to remove the named primary key constraint from a table.
|
||||
func (b *SqliteBuilder) DropPrimaryKey(table, name string) *Query {
|
||||
q := b.NewQuery("")
|
||||
q.LastError = errors.New("SQLite does not support dropping primary key")
|
||||
return q
|
||||
}
|
||||
|
||||
// AddForeignKey creates a Query that can be used to add a foreign key constraint to a table.
|
||||
// The length of cols and refCols must be the same as they refer to the primary and referential columns.
|
||||
// The optional "options" parameters will be appended to the SQL statement. They can be used to
|
||||
// specify options such as "ON DELETE CASCADE".
|
||||
func (b *SqliteBuilder) AddForeignKey(table, name string, cols, refCols []string, refTable string, options ...string) *Query {
|
||||
q := b.NewQuery("")
|
||||
q.LastError = errors.New("SQLite does not support adding foreign keys")
|
||||
return q
|
||||
}
|
||||
|
||||
// DropForeignKey creates a Query that can be used to remove the named foreign key constraint from a table.
|
||||
func (b *SqliteBuilder) DropForeignKey(table, name string) *Query {
|
||||
q := b.NewQuery("")
|
||||
q.LastError = errors.New("SQLite does not support dropping foreign keys")
|
||||
return q
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue