builder

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2023 License: MIT Imports: 10 Imported by: 8

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
	AllowTableSchema    bool
	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 ...any)

AddArguments appends multiple arguments without writing placeholder query..

func (Buffer) Arguments

func (b Buffer) Arguments() []any

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) WriteTable added in v0.15.0

func (b *Buffer) WriteTable(table string)

WriteTable writes table name.

func (*Buffer) WriteValue

func (b *Buffer) WriteValue(value any)

WriteValue query placeholder and append value to argument.

type BufferFactory

type BufferFactory struct {
	Quoter              Quoter
	ValueConverter      driver.ValueConverter
	AllowTableSchema    bool
	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 ColumnOptionsMapper added in v0.16.0

type ColumnOptionsMapper func(*rel.Column) string

type DefinitionFilter added in v0.13.0

type DefinitionFilter func(table rel.Table, def rel.TableDefinition) bool

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, []any)

Build SQL query and its arguments.

type DropKeyMapper added in v0.14.0

type DropKeyMapper func(rel.KeyType) string

type Filter

type Filter struct{}

Filter builder.

func (Filter) Write

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

Write SQL to buffer.

func (Filter) WriteComparison added in v0.9.0

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

WriteComparison SQL to buffer.

func (Filter) WriteInclusion added in v0.9.0

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

WriteInclusion SQL to buffer.

func (Filter) WriteInclusionValues added in v0.9.0

func (f Filter) WriteInclusionValues(buffer *Buffer, values []any, queryWriter QueryWriter)

func (Filter) WriteLogical added in v0.9.0

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

WriteLogical SQL to buffer.

func (Filter) WriteSubQuery added in v0.9.0

func (f Filter) WriteSubQuery(buffer *Buffer, sub rel.SubQuery, queryWriter QueryWriter)

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
	OnConflict            OnConflict
}

Insert builder.

func (Insert) Build

func (i Insert) Build(table string, primaryField string, mutates map[string]rel.Mutate, onConflict rel.OnConflict) (string, []any)

Build sql query and its arguments.

func (Insert) WriteInsertInto added in v0.9.0

func (i Insert) WriteInsertInto(buffer *Buffer, table string)

func (Insert) WriteReturning added in v0.9.0

func (i Insert) WriteReturning(buffer *Buffer, primaryField string)

func (Insert) WriteValues added in v0.9.0

func (i Insert) WriteValues(buffer *Buffer, mutates map[string]rel.Mutate)

type InsertAll

type InsertAll struct {
	BufferFactory         BufferFactory
	ReturningPrimaryValue bool
	OnConflict            OnConflict
}

InsertAll builder.

func (InsertAll) Build

func (ia InsertAll) Build(table string, primaryField string, fields []string, bulkMutates []map[string]rel.Mutate, onConflict rel.OnConflict) (string, []any)

Build SQL string and its arguments.

func (InsertAll) WriteInsertInto added in v0.9.0

func (ia InsertAll) WriteInsertInto(buffer *Buffer, table string)

func (InsertAll) WriteReturning added in v0.9.0

func (ia InsertAll) WriteReturning(buffer *Buffer, primaryField string)

func (InsertAll) WriteValues added in v0.9.0

func (ia InsertAll) WriteValues(buffer *Buffer, fields []string, bulkMutates []map[string]rel.Mutate)

type OnConflict added in v0.9.0

type OnConflict struct {
	Statement       string
	IgnoreStatement string
	UpdateStatement string
	TableQualifier  string
	SupportKey      bool
	UseValues       bool
}

func (OnConflict) Write added in v0.9.0

func (oc OnConflict) Write(buffer *Buffer, fields []string, onConflict rel.OnConflict)

func (OnConflict) WriteIgnore added in v0.9.0

func (oc OnConflict) WriteIgnore(buffer *Buffer, fields []string)

func (OnConflict) WriteKeys added in v0.9.0

func (oc OnConflict) WriteKeys(buffer *Buffer, onConflict rel.OnConflict)

func (OnConflict) WriteMutates added in v0.9.0

func (oc OnConflict) WriteMutates(buffer *Buffer, mutates map[string]rel.Mutate, onConflict rel.OnConflict)

func (OnConflict) WriteReplace added in v0.9.0

func (oc OnConflict) WriteReplace(buffer *Buffer, fields []string)

type Query

type Query struct {
	BufferFactory BufferFactory
	Filter        Filter
}

Query builder.

func (Query) Build

func (q Query) Build(query rel.Query) (string, []any)

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) WriteLimitOffset added in v0.13.1

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

WriteLimitOffset 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 any) 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 any) string
}

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

type Table

type Table struct {
	BufferFactory       BufferFactory
	ColumnMapper        ColumnMapper
	ColumnOptionsMapper ColumnOptionsMapper
	DropKeyMapper       DropKeyMapper
	DefinitionFilter    DefinitionFilter
}

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, []any)

Build SQL string and it arguments.

Jump to

Keyboard shortcuts

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