builder

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2021 License: MIT Imports: 10 Imported by: 9

Documentation

Index

Constants

This section is empty.

Variables

View Source
var UnescapeCharacter byte = '^'

UnescapeCharacter disable field escaping when it starts with this character.

Functions

This section is empty.

Types

type Buffer

type Buffer struct {
	strings.Builder
	Quoter              Quoter
	ValueConverter      driver.ValueConverter
	ArgumentPlaceholder string
	ArgumentOrdinal     bool
	InlineValues        bool
	BoolTrueValue       string
	BoolFalseValue      string
	// contains filtered or unexported fields
}

Buffer is used to build query string.

func (*Buffer) AddArguments

func (b *Buffer) AddArguments(args ...interface{})

AddArguments appends multiple arguments without writing placeholder query..

func (Buffer) Arguments

func (b Buffer) Arguments() []interface{}

func (*Buffer) Reset

func (b *Buffer) Reset()

Reset buffer.

func (*Buffer) WriteEscape

func (b *Buffer) WriteEscape(value string)

WriteEscape string.

func (*Buffer) WriteField added in v0.3.0

func (b *Buffer) WriteField(table, field string)

WriteField writes table and field name.

func (*Buffer) WritePlaceholder

func (b *Buffer) WritePlaceholder()

WritePlaceholder without adding argument. argument can be added later using AddArguments function.

func (*Buffer) WriteValue

func (b *Buffer) WriteValue(value interface{})

WriteValue query placeholder and append value to argument.

type BufferFactory

type BufferFactory struct {
	Quoter              Quoter
	ValueConverter      driver.ValueConverter
	ArgumentPlaceholder string
	ArgumentOrdinal     bool
	InlineValues        bool
	BoolTrueValue       string
	BoolFalseValue      string
}

BufferFactory is used to create buffer based on shared settings.

func (BufferFactory) Create

func (bf BufferFactory) Create() Buffer

type ColumnMapper

type ColumnMapper func(*rel.Column) (string, int, int)

type Delete

type Delete struct {
	BufferFactory BufferFactory
	Query         QueryWriter
	Filter        Filter
}

Delete builder.

func (Delete) Build

func (ds Delete) Build(table string, filter rel.FilterQuery) (string, []interface{})

Build SQL query and its arguments.

type Filter

type Filter struct{}

Filter builder.

func (Filter) BuildComparison

func (f Filter) BuildComparison(buffer *Buffer, table string, filter rel.FilterQuery, queryWriter QueryWriter)

BuildComparison SQL to buffer.

func (Filter) BuildInclusion

func (f Filter) BuildInclusion(buffer *Buffer, table string, filter rel.FilterQuery, queryWriter QueryWriter)

BuildInclusion SQL to buffer.

func (Filter) BuildLogical

func (f Filter) BuildLogical(buffer *Buffer, table, op string, inner []rel.FilterQuery, queryWriter QueryWriter)

BuildLogical SQL to buffer.

func (Filter) Write

func (f Filter) Write(buffer *Buffer, table string, filter rel.FilterQuery, queryWriter QueryWriter)

Write SQL to buffer.

type Index

type Index struct {
	BufferFactory    BufferFactory
	Query            QueryWriter
	Filter           Filter
	DropIndexOnTable bool
	SupportFilter    bool
}

Index builder.

func (Index) Build

func (i Index) Build(index rel.Index) string

Build sql query for index.

func (Index) WriteCreateIndex

func (i Index) WriteCreateIndex(buffer *Buffer, index rel.Index)

WriteCreateIndex to buffer

func (Index) WriteDropIndex

func (i Index) WriteDropIndex(buffer *Buffer, index rel.Index)

WriteDropIndex to buffer

func (Index) WriteOptions

func (i Index) WriteOptions(buffer *Buffer, options string)

WriteOptions sql to buffer.

type Insert

type Insert struct {
	BufferFactory         BufferFactory
	ReturningPrimaryValue bool
	InsertDefaultValues   bool
}

Insert builder.

func (Insert) Build

func (i Insert) Build(table string, primaryField string, mutates map[string]rel.Mutate) (string, []interface{})

Build sql query and its arguments.

type InsertAll

type InsertAll struct {
	BufferFactory         BufferFactory
	ReturningPrimaryValue bool
}

InsertAll builder.

func (InsertAll) Build

func (ia InsertAll) Build(table string, primaryField string, fields []string, bulkMutates []map[string]rel.Mutate) (string, []interface{})

Build SQL string and its arguments.

type Query

type Query struct {
	BufferFactory BufferFactory
	Filter        Filter
}

Query builder.

func (Query) Build

func (q Query) Build(query rel.Query) (string, []interface{})

Build SQL string and it arguments.

func (Query) Write

func (q Query) Write(buffer *Buffer, query rel.Query)

Write SQL to buffer.

func (Query) WriteFrom

func (q Query) WriteFrom(buffer *Buffer, table string)

WriteFrom SQL to buffer.

func (Query) WriteGroupBy

func (q Query) WriteGroupBy(buffer *Buffer, table string, fields []string)

WriteGroupBy SQL to buffer.

func (Query) WriteHaving

func (q Query) WriteHaving(buffer *Buffer, table string, filter rel.FilterQuery)

WriteHaving SQL to buffer.

func (Query) WriteJoin

func (q Query) WriteJoin(buffer *Buffer, table string, joins []rel.JoinQuery)

WriteJoin SQL to buffer.

func (Query) WriteLimitOffet

func (q Query) WriteLimitOffet(buffer *Buffer, limit rel.Limit, offset rel.Offset)

WriteLimitOffet SQL to buffer.

func (Query) WriteOrderBy

func (q Query) WriteOrderBy(buffer *Buffer, table string, orders []rel.SortQuery)

WriteOrderBy SQL to buffer.

func (Query) WriteQuery

func (q Query) WriteQuery(buffer *Buffer, query rel.Query)

WriteQuery SQL to buffer.

func (Query) WriteSelect

func (q Query) WriteSelect(buffer *Buffer, table string, selectQuery rel.SelectQuery)

WriteSelect SQL to buffer.

func (Query) WriteWhere

func (q Query) WriteWhere(buffer *Buffer, table string, filter rel.FilterQuery)

WriteWhere SQL to buffer.

type QueryWriter

type QueryWriter interface {
	Write(buffer *Buffer, query rel.Query)
}

type Quote added in v0.2.0

type Quote struct {
	IDPrefix             string
	IDSuffix             string
	IDSuffixEscapeChar   string
	ValueQuote           string
	ValueQuoteEscapeChar string
}

Quote is default implementation of Quoter interface.

func (Quote) ID added in v0.2.0

func (q Quote) ID(name string) string

func (Quote) Value added in v0.2.0

func (q Quote) Value(v interface{}) string

type Quoter added in v0.2.0

type Quoter interface {
	// ID quotes identifiers such as schema, table, or column names.
	// ID does not operate on multipart identifiers such as "public.Table",
	// it only operates on single identifiers such as "public" and "Table".
	ID(name string) string

	// Value quotes database values such as string or []byte types as strings
	// that are suitable and safe to embed in SQL text. The returned value
	// of a string will include all surrounding quotes.
	//
	// If a value type is not supported it must panic.
	Value(v interface{}) string
}

Quoter returns safe and valid SQL strings to use when building a SQL text.

type Table

type Table struct {
	BufferFactory BufferFactory
	ColumnMapper  ColumnMapper
}

Table builder.

func (Table) Build

func (t Table) Build(table rel.Table) string

Build SQL query for table creation and modification.

func (Table) WriteAlterTable

func (t Table) WriteAlterTable(buffer *Buffer, table rel.Table)

WriteAlterTable query to buffer.

func (Table) WriteColumn

func (t Table) WriteColumn(buffer *Buffer, column rel.Column)

WriteColumn definition to buffer.

func (Table) WriteCreateTable

func (t Table) WriteCreateTable(buffer *Buffer, table rel.Table)

WriteCreateTable query to buffer.

func (Table) WriteDropTable

func (t Table) WriteDropTable(buffer *Buffer, table rel.Table)

WriteDropTable query to buffer.

func (Table) WriteKey

func (t Table) WriteKey(buffer *Buffer, key rel.Key)

WriteKey definition to buffer.

func (Table) WriteOptions

func (t Table) WriteOptions(buffer *Buffer, options string)

WriteOptions sql to buffer.

func (Table) WriteRenameTable

func (t Table) WriteRenameTable(buffer *Buffer, table rel.Table)

WriteRenameTable query to buffer.

type Update

type Update struct {
	BufferFactory BufferFactory
	Query         QueryWriter
	Filter        Filter
}

Update builder.

func (Update) Build

func (u Update) Build(table string, primaryField string, mutates map[string]rel.Mutate, filter rel.FilterQuery) (string, []interface{})

Build SQL string and it arguments.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL