decl

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BindNamedSQL

func BindNamedSQL(input []Param, sql string) string

BindNamedSQL binds named inputs to SQL placeholders.

func BuildUpdateCTEInsertSQL

func BuildUpdateCTEInsertSQL(input []Param, cteName string, update CTEUpdate, insert InsertSelect) string

BuildUpdateCTEInsertSQL собирает SQL для паттерна: WITH cte AS (UPDATE ... RETURNING ...) INSERT INTO ... SELECT ... FROM cte

В выражениях SelectExprs можно использовать именованные параметры вида :ParamName, которые будут заменены на позиционные плейсхолдеры по input.

func BuildWithPlanSQL

func BuildWithPlanSQL(input []Param, ctes []NamedCTE, insert InsertSelectPlan) string

BuildWithPlanSQL собирает WITH-запрос из структурированных CTE и финального INSERT ... SELECT.

func BuildWithSQL

func BuildWithSQL(input []Param, ctes []CTE, mainSQL string) string

BuildWithSQL собирает универсальный WITH-блок с несколькими CTE и финальным запросом. В SQL-тексте CTE и mainSQL можно использовать именованные параметры :ParamName.

Types

type Binding

type Binding struct {
	Column string
	Expr   string
}

type CTE

type CTE struct {
	Name string
	SQL  string
}

type CTEFromBuilder

type CTEFromBuilder struct {
	// contains filtered or unexported fields
}

func CTEFromCTE

func CTEFromCTE(name string) CTEFromBuilder

CTEFromCTE configures CTE builder step.

func CTEFromRaw

func CTEFromRaw(from string) CTEFromBuilder

CTEFromRaw configures CTE builder step.

func CTEFromTable

func CTEFromTable(table TableRef) CTEFromBuilder

CTEFromTable configures CTE builder step.

func (CTEFromBuilder) Build

func (b CTEFromBuilder) Build() string

Build builds and returns the resulting value.

func (CTEFromBuilder) JoinCTE

func (b CTEFromBuilder) JoinCTE(name string, left, right ColumnRef) CTEFromBuilder

JoinCTE appends join clause to the builder.

func (CTEFromBuilder) JoinTable

func (b CTEFromBuilder) JoinTable(table TableRef, left, right ColumnRef) CTEFromBuilder

JoinTable appends join clause to the builder.

func (CTEFromBuilder) LeftJoinCTE

func (b CTEFromBuilder) LeftJoinCTE(name string, left, right ColumnRef) CTEFromBuilder

LeftJoinCTE appends left join clause to the builder.

func (CTEFromBuilder) LeftJoinTable

func (b CTEFromBuilder) LeftJoinTable(table TableRef, left, right ColumnRef) CTEFromBuilder

LeftJoinTable appends left join clause to the builder.

func (CTEFromBuilder) RightJoinCTE

func (b CTEFromBuilder) RightJoinCTE(name string, left, right ColumnRef) CTEFromBuilder

RightJoinCTE appends right join clause to the builder.

func (CTEFromBuilder) RightJoinTable

func (b CTEFromBuilder) RightJoinTable(table TableRef, left, right ColumnRef) CTEFromBuilder

RightJoinTable appends right join clause to the builder.

type CTESelect

type CTESelect struct {
	From      string
	Select    []CTESelectItem
	WhereEq   []ColumnRef
	WhereNull []ColumnRef
}

type CTESelectBuilder

type CTESelectBuilder struct {
	// contains filtered or unexported fields
}

func NewCTESelect

func NewCTESelect() *CTESelectBuilder

NewCTESelect creates and initializes a new value.

func (*CTESelectBuilder) Build

func (b *CTESelectBuilder) Build() CTESelect

Build builds and returns the resulting value.

func (*CTESelectBuilder) FromCTE

func (b *CTESelectBuilder) FromCTE(name string) *CTESelectBuilder

FromCTE configures source for the builder.

func (*CTESelectBuilder) FromSource

func (b *CTESelectBuilder) FromSource(from CTEFromBuilder) *CTESelectBuilder

FromSource configures source for the builder.

func (*CTESelectBuilder) FromTable

func (b *CTESelectBuilder) FromTable(table TableRef) *CTESelectBuilder

FromTable configures source for the builder.

func (*CTESelectBuilder) JoinCTE

func (b *CTESelectBuilder) JoinCTE(name string, left, right ColumnRef) *CTESelectBuilder

JoinCTE appends join clause to the builder.

func (*CTESelectBuilder) JoinTable

func (b *CTESelectBuilder) JoinTable(table TableRef, left, right ColumnRef) *CTESelectBuilder

JoinTable appends join clause to the builder.

func (*CTESelectBuilder) LeftJoinCTE

func (b *CTESelectBuilder) LeftJoinCTE(name string, left, right ColumnRef) *CTESelectBuilder

LeftJoinCTE appends left join clause to the builder.

func (*CTESelectBuilder) LeftJoinTable

func (b *CTESelectBuilder) LeftJoinTable(table TableRef, left, right ColumnRef) *CTESelectBuilder

LeftJoinTable appends left join clause to the builder.

func (*CTESelectBuilder) RightJoinCTE

func (b *CTESelectBuilder) RightJoinCTE(name string, left, right ColumnRef) *CTESelectBuilder

RightJoinCTE appends right join clause to the builder.

func (*CTESelectBuilder) RightJoinTable

func (b *CTESelectBuilder) RightJoinTable(table TableRef, left, right ColumnRef) *CTESelectBuilder

RightJoinTable appends right join clause to the builder.

func (*CTESelectBuilder) Select

func (b *CTESelectBuilder) Select(items ...CTESelectItem) *CTESelectBuilder

Select appends select projection to the builder.

func (*CTESelectBuilder) WhereEq

func (b *CTESelectBuilder) WhereEq(columns ...ColumnRef) *CTESelectBuilder

WhereEq appends filter condition to the builder.

func (*CTESelectBuilder) WhereNull

func (b *CTESelectBuilder) WhereNull(columns ...ColumnRef) *CTESelectBuilder

WhereNull appends filter condition to the builder.

type CTESelectItem

type CTESelectItem struct {
	Expr  SQLExpr
	Alias string
}

func CTEItem

func CTEItem(expr SQLExpr) CTESelectItem

CTEItem configures CTE builder step.

func CTEItemAs

func CTEItemAs(alias string, expr SQLExpr) CTESelectItem

CTEItemAs configures CTE builder step.

type CTEUpdate

type CTEUpdate struct {
	Table     TableRef
	Set       []ColumnRef
	WhereEq   []ColumnRef
	WhereNull []ColumnRef
	Returning []ColumnRef
}

type CTEUpdateBuilder

type CTEUpdateBuilder struct {
	// contains filtered or unexported fields
}

func (*CTEUpdateBuilder) Build

func (b *CTEUpdateBuilder) Build() CTEUpdate

Build builds and returns the resulting value.

func (*CTEUpdateBuilder) Returning

func (b *CTEUpdateBuilder) Returning(columns ...ColumnRef) *CTEUpdateBuilder

Returning configures RETURNING clause projection.

func (*CTEUpdateBuilder) Set

func (b *CTEUpdateBuilder) Set(columns ...ColumnRef) *CTEUpdateBuilder

Set sets builder field value.

func (*CTEUpdateBuilder) WhereEq

func (b *CTEUpdateBuilder) WhereEq(columns ...ColumnRef) *CTEUpdateBuilder

WhereEq appends filter condition to the builder.

func (*CTEUpdateBuilder) WhereNull

func (b *CTEUpdateBuilder) WhereNull(columns ...ColumnRef) *CTEUpdateBuilder

WhereNull appends filter condition to the builder.

type ColumnRef

type ColumnRef struct {
	Table     string
	Qualifier string
	Name      string
	Param     string
	Type      string
}

func Col

func Col(tableName, columnName, paramName, paramType string) ColumnRef

Col creates a column reference helper.

func Ref

func Ref(tableName, columnName string) ColumnRef

Ref создает ссылку на колонку без input-параметра. Удобно для JOIN/SELECT выражений, где не нужен in.<Param>.

func (ColumnRef) As

func (c ColumnRef) As(paramName, paramType string) ColumnRef

As позволяет точечно переопределить имя/тип входного параметра для конкретного кейса.

func (ColumnRef) AsOptional

func (c ColumnRef) AsOptional(paramName string) ColumnRef

AsOptional = Optional().Named(...), удобен для inline-переопределений.

func (ColumnRef) AsRequired

func (c ColumnRef) AsRequired(paramName string) ColumnRef

AsRequired = Required().Named(...), удобен для inline-переопределений.

func (ColumnRef) AsSlice

func (c ColumnRef) AsSlice(paramName string) ColumnRef

AsSlice = Slice().Named(...), чтобы переопределить имя параметра без ручного указания типа.

func (ColumnRef) Asc

func (c ColumnRef) Asc() string

Asc configures ordering direction.

func (ColumnRef) Desc

func (c ColumnRef) Desc() string

Desc configures ordering direction.

func (ColumnRef) From

func (c ColumnRef) From() ColumnRef

From configures source for the builder.

func (ColumnRef) Input

func (c ColumnRef) Input() InputRef

Input configures component input binding.

func (ColumnRef) Max

func (c ColumnRef) Max() ColumnRef

Max configures range boundary value.

func (ColumnRef) Min

func (c ColumnRef) Min() ColumnRef

Min configures range boundary value.

func (ColumnRef) Named

func (c ColumnRef) Named(paramName string) ColumnRef

Named меняет только имя параметра/поля, сохраняя текущий тип.

func (ColumnRef) Optional

func (c ColumnRef) Optional() ColumnRef

Optional делает тип nullable (*), если это возможно.

func (ColumnRef) Pattern

func (c ColumnRef) Pattern() ColumnRef

Pattern handles pattern.

func (ColumnRef) QualifierOrTable

func (c ColumnRef) QualifierOrTable() string

QualifierOrTable handles qualifier or table.

func (ColumnRef) Required

func (c ColumnRef) Required() ColumnRef

Required снимает nullable-обертку (*) у типа.

func (ColumnRef) Role

func (c ColumnRef) Role(role string) ColumnRef

Role handles role.

func (ColumnRef) Slice

func (c ColumnRef) Slice() ColumnRef

Slice делает параметр срезом базового (required) типа. Пример: string -> []string, *int64 -> []int64. Имя параметра по умолчанию приводится к простому plural form.

func (ColumnRef) To

func (c ColumnRef) To() ColumnRef

To converts value to target representation.

type FKRelation

type FKRelation struct {
	Name      string
	FromTable string
	ToTable   string
	From      ColumnRef
	To        ColumnRef
	Required  bool
	Role      string
}

FKRelation описывает связь foreign key между таблицами. Направление: From -> To (child -> parent).

func (FKRelation) AsRole

func (r FKRelation) AsRole(role string) FKRelation

AsRole aliases value for downstream usage.

func (FKRelation) Reverse

func (r FKRelation) Reverse() FKRelation

Reverse configures ordering direction.

type HavingExpr

type HavingExpr struct {
	Expr string
}

type InputRef

type InputRef struct {
	Name string
	Type string
}

InputRef — типизированная ссылка на входной параметр (имя + тип), чтобы избегать "голых" строк в DSL.

func BoolRef

func BoolRef(name string) InputRef

BoolRef creates bool input reference.

func I64Ref

func I64Ref(name string) InputRef

I64Ref creates int64 input reference.

func In

func In(name, typ string) InputRef

In creates typed input reference.

func InAny

func InAny(name string) InputRef

InAny creates input reference with type any.

func IntRef

func IntRef(name string) InputRef

IntRef creates int input reference.

func StrRef

func StrRef(name string) InputRef

StrRef creates string input reference.

func (InputRef) Expr

func (r InputRef) Expr() string

Expr creates SQL expression helper value.

func (InputRef) Named

func (r InputRef) Named(name string) InputRef

Named returns canonical name value.

func (InputRef) Param

func (r InputRef) Param() Param

Param configures SQL parameter binding.

func (InputRef) Typed

func (r InputRef) Typed(typ string) InputRef

Typed sets type for input reference.

type InsertSelect

type InsertSelect struct {
	Table       TableRef
	Columns     []ColumnRef
	SelectExprs []string
	From        string
}

type InsertSelectPlan

type InsertSelectPlan struct {
	Table   TableRef
	Columns []ColumnRef
	Select  []SQLExpr
	From    string
}

type JSONBPair

type JSONBPair struct {
	Key   string
	Value SQLExpr
}

func Pair

func Pair(key string, value SQLExpr) JSONBPair

Pair creates a key-value helper pair.

type Join

type Join struct {
	Type  JoinType
	Table string
	Alias string
	Left  string
	Right string
	On    []JoinPredicate
}

type JoinOnBuilder

type JoinOnBuilder struct {
	// contains filtered or unexported fields
}

func (*JoinOnBuilder) And

func (j *JoinOnBuilder) And(configure func(*JoinOnBuilder)) *JoinOnBuilder

And creates predicate for query conditions.

func (*JoinOnBuilder) Eq

func (j *JoinOnBuilder) Eq(left, right ColumnRef) *JoinOnBuilder

Eq creates predicate for query conditions.

func (*JoinOnBuilder) Gt

func (j *JoinOnBuilder) Gt(left, right ColumnRef) *JoinOnBuilder

Gt creates predicate for query conditions.

func (*JoinOnBuilder) Lt

func (j *JoinOnBuilder) Lt(left, right ColumnRef) *JoinOnBuilder

Lt creates predicate for query conditions.

func (*JoinOnBuilder) Null

func (j *JoinOnBuilder) Null(column ColumnRef) *JoinOnBuilder

Null creates predicate for query conditions.

func (*JoinOnBuilder) Or

func (j *JoinOnBuilder) Or(configure func(*JoinOnBuilder)) *JoinOnBuilder

Or creates predicate for query conditions.

type JoinPredicate

type JoinPredicate struct {
	Kind      PredicateKind
	Left      string
	Right     string
	GroupWith LogicalOperator
	Group     []JoinPredicate
}

type JoinType

type JoinType string
const (
	JoinInner JoinType = "inner"
	JoinLeft  JoinType = "left"
	JoinRight JoinType = "right"
)

type Keyset

type Keyset struct {
	Column        string
	Direction     string
	CursorExpr    string
	LimitExpr     string
	Columns       []string
	CursorExprs   []string
	BeforeExprs   []string
	LimitName     string
	Bidirectional bool
}

type LockStrength

type LockStrength string
const (
	LockForUpdate LockStrength = "FOR UPDATE"
	LockForShare  LockStrength = "FOR SHARE"
)

type LockWaitMode

type LockWaitMode string
const (
	LockWaitDefault    LockWaitMode = ""
	LockWaitSkipLocked LockWaitMode = "SKIP LOCKED"
	LockWaitNoWait     LockWaitMode = "NOWAIT"
)

type LockingClause

type LockingClause struct {
	Strength LockStrength
	WaitMode LockWaitMode
}

type LogicalOperator

type LogicalOperator string
const (
	LogicalAnd LogicalOperator = "AND"
	LogicalOr  LogicalOperator = "OR"
)

type MethodKind

type MethodKind string
const (
	MethodInsertReturningScalar MethodKind = "insert_returning_scalar"
	MethodGetOne                MethodKind = "get_one"
	MethodList                  MethodKind = "list"
	MethodExists                MethodKind = "exists"
	MethodUpdate                MethodKind = "update"
	MethodPatchUpdate           MethodKind = "patch_update"
	MethodDelete                MethodKind = "delete"
	MethodUpdateReturning       MethodKind = "update_returning"
	MethodDeleteReturning       MethodKind = "delete_returning"
	MethodInsertMany            MethodKind = "insert_many"
	MethodUpsertMany            MethodKind = "upsert_many"
)

type MethodRef

type MethodRef string

func (MethodRef) Name

func (m MethodRef) Name() string

Name returns canonical name value.

type NamedCTE

type NamedCTE struct {
	Name   string
	Update *CTEUpdate
	Select *CTESelect
}

func CTESelectNamed

func CTESelectNamed(name string, selectPlan CTESelect) NamedCTE

CTESelectNamed configures CTE builder step.

func CTEUpdateNamed

func CTEUpdateNamed(name string, update CTEUpdate) NamedCTE

CTEUpdateNamed configures CTE builder step.

type OnConflict

type OnConflict struct {
	Target      []string
	Constraint  string
	DoNothing   bool
	UpdateSet   []string
	UpdateWhere string
}

type OpBuilder

type OpBuilder struct {
	// contains filtered or unexported fields
}

OpBuilder собирает компактное декларативное описание операции и разворачивает его в Operation для существующего генератора.

func DeleteFrom

func DeleteFrom(name string, table TableRef) *OpBuilder

DeleteFrom configures delete operation builder.

func DeleteReturning

func DeleteReturning(name string, table TableRef) *OpBuilder

DeleteReturning configures delete operation builder.

func Exists

func Exists(name string, table TableRef) *OpBuilder

Exists checks whether value exists.

func GetOne

func GetOne(name string, table TableRef) *OpBuilder

GetOne returns requested value.

func InsertMany

func InsertMany(name string, table TableRef) *OpBuilder

InsertMany configures insert operation builder.

func InsertReturning

func InsertReturning(name string, table TableRef) *OpBuilder

InsertReturning configures insert operation builder.

func List

func List(name string, table TableRef) *OpBuilder

List returns matching collection.

func PatchUpdate

func PatchUpdate(name string, table TableRef) *OpBuilder

PatchUpdate configures patch update behavior.

func Update

func Update(name string, table TableRef) *OpBuilder

Update configures update operation builder.

func UpdateReturning

func UpdateReturning(name string, table TableRef) *OpBuilder

UpdateReturning configures update operation builder.

func UpsertMany

func UpsertMany(name string, table TableRef) *OpBuilder

UpsertMany configures upsert operation builder.

func (*OpBuilder) AtomicBatch

func (b *OpBuilder) AtomicBatch() *OpBuilder

AtomicBatch enables transactional all-or-nothing execution for batched operations.

func (*OpBuilder) BatchSize

func (b *OpBuilder) BatchSize(size int) *OpBuilder

BatchSize configures batch settings for execution.

func (*OpBuilder) Build

func (b *OpBuilder) Build() Operation

Build builds and returns the resulting value.

func (*OpBuilder) CopyMode

func (b *OpBuilder) CopyMode() *OpBuilder

CopyMode configures copy mode behavior.

func (*OpBuilder) DoNothing

func (b *OpBuilder) DoNothing() *OpBuilder

DoNothing configures action to execute in current builder.

func (*OpBuilder) DoUpdateSet

func (b *OpBuilder) DoUpdateSet(columns ...ColumnRef) *OpBuilder

DoUpdateSet configures action to execute in current builder.

func (*OpBuilder) DoUpdateWhereExcludedGt

func (b *OpBuilder) DoUpdateWhereExcludedGt(column ColumnRef) *OpBuilder

DoUpdateWhereExcludedGt configures action to execute in current builder.

func (*OpBuilder) DoUpdateWhereExpr

func (b *OpBuilder) DoUpdateWhereExpr(expr string) *OpBuilder

DoUpdateWhereExpr configures action to execute in current builder.

func (*OpBuilder) ForShare

func (b *OpBuilder) ForShare() *OpBuilder

ForShare configures lock or scope for the builder.

func (*OpBuilder) ForUpdate

func (b *OpBuilder) ForUpdate() *OpBuilder

ForUpdate configures lock or scope for the builder.

func (*OpBuilder) From

func (b *OpBuilder) From(table TableRef) *OpBuilder

From задает базовый источник запроса через типизированную table-ссылку.

func (*OpBuilder) FromCTE

func (b *OpBuilder) FromCTE(name string) *OpBuilder

FromCTE задает базовый источник запроса через имя CTE.

func (*OpBuilder) FromSource

func (b *OpBuilder) FromSource(from string) *OpBuilder

FromSource configures source for the builder.

func (*OpBuilder) GroupBy

func (b *OpBuilder) GroupBy(columns ...ColumnRef) *OpBuilder

GroupBy appends grouping to the builder.

func (*OpBuilder) HavingCountGt

func (b *OpBuilder) HavingCountGt(column ColumnRef, paramName string) *OpBuilder

HavingCountGt appends HAVING condition to the builder.

func (*OpBuilder) HavingExpr

func (b *OpBuilder) HavingExpr(expr string, params ...Param) *OpBuilder

HavingExpr appends HAVING condition to the builder.

func (*OpBuilder) Inputs

func (b *OpBuilder) Inputs(inputs ...InputRef) *OpBuilder

Inputs configures component input binding.

func (*OpBuilder) Join

func (b *OpBuilder) Join(table TableRef, left, right ColumnRef) *OpBuilder

Join appends join clause to the builder.

func (*OpBuilder) JoinCTE

func (b *OpBuilder) JoinCTE(name string, left, right ColumnRef) *OpBuilder

JoinCTE appends join clause to the builder.

func (*OpBuilder) JoinFK

func (b *OpBuilder) JoinFK(relation FKRelation) *OpBuilder

JoinFK appends join clause to the builder.

func (*OpBuilder) JoinFrom

func (b *OpBuilder) JoinFrom(table TableRef, left, right ColumnRef) *OpBuilder

JoinFrom appends join clause to the builder.

func (*OpBuilder) JoinOn

func (b *OpBuilder) JoinOn(table TableRef, left, right ColumnRef, configure func(*JoinOnBuilder)) *OpBuilder

JoinOn appends join clause to the builder.

func (*OpBuilder) JoinPath

func (b *OpBuilder) JoinPath(relations ...FKRelation) *OpBuilder

JoinPath appends join clause to the builder.

func (*OpBuilder) JoinRole

func (b *OpBuilder) JoinRole(table TableRef, role string, left, right ColumnRef) *OpBuilder

JoinRole appends join clause to the builder.

func (*OpBuilder) JoinTable

func (b *OpBuilder) JoinTable(table TableColumns, left, right ColumnRef) *OpBuilder

JoinTable appends join clause to the builder.

func (*OpBuilder) JoinTableOn

func (b *OpBuilder) JoinTableOn(table TableColumns, left, right ColumnRef, configure func(*JoinOnBuilder)) *OpBuilder

JoinTableOn appends join clause to the builder.

func (*OpBuilder) KeysetAsc

func (b *OpBuilder) KeysetAsc(column, cursor ColumnRef, limitParamName string) *OpBuilder

KeysetAsc configures keyset pagination in the builder.

func (*OpBuilder) KeysetAscAuto

func (b *OpBuilder) KeysetAscAuto(column ColumnRef) *OpBuilder

KeysetAscAuto использует стандартные имена input: cursor = After<ColumnParam>, limit = Limit.

func (*OpBuilder) KeysetAscAutoBy

func (b *OpBuilder) KeysetAscAutoBy(columns ...ColumnRef) *OpBuilder

KeysetAscAutoBy configures keyset pagination in the builder.

func (*OpBuilder) KeysetAscBiAutoBy

func (b *OpBuilder) KeysetAscBiAutoBy(columns ...ColumnRef) *OpBuilder

KeysetAscBiAutoBy configures keyset pagination in the builder.

func (*OpBuilder) KeysetAscBiByInput

func (b *OpBuilder) KeysetAscBiByInput(limit InputRef, columns ...ColumnRef) *OpBuilder

KeysetAscBiByInput configures keyset pagination in the builder.

func (*OpBuilder) KeysetAscBy

func (b *OpBuilder) KeysetAscBy(limitParamName string, columns ...ColumnRef) *OpBuilder

KeysetAscBy настраивает составной keyset (по нескольким колонкам) с явным именем limit-параметра. Для каждой колонки автоматически используется курсор After<Param>.

func (*OpBuilder) KeysetAscByInput

func (b *OpBuilder) KeysetAscByInput(limit InputRef, columns ...ColumnRef) *OpBuilder

KeysetAscByInput configures keyset pagination in the builder.

func (*OpBuilder) KeysetAscWith

func (b *OpBuilder) KeysetAscWith(column, cursor ColumnRef, limit InputRef) *OpBuilder

KeysetAscWith configures keyset pagination in the builder.

func (*OpBuilder) KeysetDesc

func (b *OpBuilder) KeysetDesc(column, cursor ColumnRef, limitParamName string) *OpBuilder

KeysetDesc configures keyset pagination in the builder.

func (*OpBuilder) KeysetDescAuto

func (b *OpBuilder) KeysetDescAuto(column ColumnRef) *OpBuilder

KeysetDescAuto использует стандартные имена input: cursor = After<ColumnParam>, limit = Limit.

func (*OpBuilder) KeysetDescAutoBy

func (b *OpBuilder) KeysetDescAutoBy(columns ...ColumnRef) *OpBuilder

KeysetDescAutoBy configures keyset pagination in the builder.

func (*OpBuilder) KeysetDescBiAutoBy

func (b *OpBuilder) KeysetDescBiAutoBy(columns ...ColumnRef) *OpBuilder

KeysetDescBiAutoBy configures keyset pagination in the builder.

func (*OpBuilder) KeysetDescBiByInput

func (b *OpBuilder) KeysetDescBiByInput(limit InputRef, columns ...ColumnRef) *OpBuilder

KeysetDescBiByInput configures keyset pagination in the builder.

func (*OpBuilder) KeysetDescBy

func (b *OpBuilder) KeysetDescBy(limitParamName string, columns ...ColumnRef) *OpBuilder

KeysetDescBy настраивает составной keyset (по нескольким колонкам) с явным именем limit-параметра. Для каждой колонки автоматически используется курсор After<Param>.

func (*OpBuilder) KeysetDescByInput

func (b *OpBuilder) KeysetDescByInput(limit InputRef, columns ...ColumnRef) *OpBuilder

KeysetDescByInput configures keyset pagination in the builder.

func (*OpBuilder) KeysetDescWith

func (b *OpBuilder) KeysetDescWith(column, cursor ColumnRef, limit InputRef) *OpBuilder

KeysetDescWith configures keyset pagination in the builder.

func (*OpBuilder) LeftJoin

func (b *OpBuilder) LeftJoin(table TableRef, left, right ColumnRef) *OpBuilder

LeftJoin appends left join clause to the builder.

func (*OpBuilder) LeftJoinCTE

func (b *OpBuilder) LeftJoinCTE(name string, left, right ColumnRef) *OpBuilder

LeftJoinCTE appends left join clause to the builder.

func (*OpBuilder) LeftJoinFK

func (b *OpBuilder) LeftJoinFK(relation FKRelation) *OpBuilder

LeftJoinFK appends left join clause to the builder.

func (*OpBuilder) LeftJoinFrom

func (b *OpBuilder) LeftJoinFrom(table TableRef, left, right ColumnRef) *OpBuilder

LeftJoinFrom appends left join clause to the builder.

func (*OpBuilder) LeftJoinOn

func (b *OpBuilder) LeftJoinOn(table TableRef, left, right ColumnRef, configure func(*JoinOnBuilder)) *OpBuilder

LeftJoinOn appends left join clause to the builder.

func (*OpBuilder) LeftJoinRole

func (b *OpBuilder) LeftJoinRole(table TableRef, role string, left, right ColumnRef) *OpBuilder

LeftJoinRole appends left join clause to the builder.

func (*OpBuilder) LeftJoinTable

func (b *OpBuilder) LeftJoinTable(table TableColumns, left, right ColumnRef) *OpBuilder

LeftJoinTable appends left join clause to the builder.

func (*OpBuilder) LeftJoinTableOn

func (b *OpBuilder) LeftJoinTableOn(
	table TableColumns,
	left, right ColumnRef,
	configure func(*JoinOnBuilder),
) *OpBuilder

LeftJoinTableOn appends left join clause to the builder.

func (*OpBuilder) NoWait

func (b *OpBuilder) NoWait() *OpBuilder

NoWait configures no-wait behavior in the builder.

func (*OpBuilder) On

func (b *OpBuilder) On(configure func(*JoinOnBuilder)) *OpBuilder

On configures ON clause for join builder.

func (*OpBuilder) OnConflict

func (b *OpBuilder) OnConflict(columns ...ColumnRef) *OpBuilder

OnConflict configures ON clause for join builder.

func (*OpBuilder) OnConflictConstraint

func (b *OpBuilder) OnConflictConstraint(name string) *OpBuilder

OnConflictConstraint configures ON clause for join builder.

func (*OpBuilder) OrderByAsc

func (b *OpBuilder) OrderByAsc(columns ...ColumnRef) *OpBuilder

OrderByAsc configures ordering in the builder.

func (*OpBuilder) OrderByDesc

func (b *OpBuilder) OrderByDesc(columns ...ColumnRef) *OpBuilder

OrderByDesc configures ordering in the builder.

func (*OpBuilder) PatchSet

func (b *OpBuilder) PatchSet(columns ...ColumnRef) *OpBuilder

PatchSet добавляет patch-колонки для MethodPatchUpdate. Для patch-входа тип параметра принудительно делается optional (*T), чтобы nil означал "поле не менять".

func (*OpBuilder) Returning

func (b *OpBuilder) Returning(values ...any) *OpBuilder

Returning configures RETURNING clause projection.

func (*OpBuilder) RightJoin

func (b *OpBuilder) RightJoin(table TableRef, left, right ColumnRef) *OpBuilder

RightJoin appends right join clause to the builder.

func (*OpBuilder) RightJoinCTE

func (b *OpBuilder) RightJoinCTE(name string, left, right ColumnRef) *OpBuilder

RightJoinCTE appends right join clause to the builder.

func (*OpBuilder) RightJoinFK

func (b *OpBuilder) RightJoinFK(relation FKRelation) *OpBuilder

RightJoinFK appends right join clause to the builder.

func (*OpBuilder) RightJoinFrom

func (b *OpBuilder) RightJoinFrom(table TableRef, left, right ColumnRef) *OpBuilder

RightJoinFrom appends right join clause to the builder.

func (*OpBuilder) RightJoinOn

func (b *OpBuilder) RightJoinOn(table TableRef, left, right ColumnRef, configure func(*JoinOnBuilder)) *OpBuilder

RightJoinOn appends right join clause to the builder.

func (*OpBuilder) RightJoinRole

func (b *OpBuilder) RightJoinRole(table TableRef, role string, left, right ColumnRef) *OpBuilder

RightJoinRole appends right join clause to the builder.

func (*OpBuilder) RightJoinTable

func (b *OpBuilder) RightJoinTable(table TableColumns, left, right ColumnRef) *OpBuilder

RightJoinTable appends right join clause to the builder.

func (*OpBuilder) RightJoinTableOn

func (b *OpBuilder) RightJoinTableOn(
	table TableColumns,
	left, right ColumnRef,
	configure func(*JoinOnBuilder),
) *OpBuilder

RightJoinTableOn appends right join clause to the builder.

func (*OpBuilder) Select

func (b *OpBuilder) Select(columns ...ColumnRef) *OpBuilder

Select appends select projection to the builder.

func (*OpBuilder) SelectAll

func (b *OpBuilder) SelectAll(table TableColumns) *OpBuilder

SelectAll appends select projection to the builder.

func (*OpBuilder) SelectAs

func (b *OpBuilder) SelectAs(column ColumnRef, fieldName string) *OpBuilder

SelectAs appends select projection to the builder.

func (*OpBuilder) SelectAsMap

func (b *OpBuilder) SelectAsMap(fields map[string]ColumnRef) *OpBuilder

SelectAsMap добавляет набор select-колонок из map[FieldName]ColumnRef. Для детерминированной генерации порядок фиксируется сортировкой по FieldName.

func (*OpBuilder) SelectExprAs

func (b *OpBuilder) SelectExprAs(expr, fieldName, fieldType string) *OpBuilder

SelectExprAs appends select projection to the builder.

func (*OpBuilder) SelectOptional

func (b *OpBuilder) SelectOptional(columns ...ColumnRef) *OpBuilder

SelectOptional appends select projection to the builder.

func (*OpBuilder) SelectOptionalAs

func (b *OpBuilder) SelectOptionalAs(column ColumnRef, fieldName string) *OpBuilder

SelectOptionalAs appends select projection to the builder.

func (*OpBuilder) SelectOptionalAsMap

func (b *OpBuilder) SelectOptionalAsMap(fields map[string]ColumnRef) *OpBuilder

SelectOptionalAsMap добавляет набор optional select-колонок из map[FieldName]ColumnRef. Для детерминированной генерации порядок фиксируется сортировкой по FieldName.

func (*OpBuilder) SelectRequired

func (b *OpBuilder) SelectRequired(columns ...ColumnRef) *OpBuilder

SelectRequired appends select projection to the builder.

func (*OpBuilder) SelectRequiredAs

func (b *OpBuilder) SelectRequiredAs(column ColumnRef, fieldName string) *OpBuilder

SelectRequiredAs appends select projection to the builder.

func (*OpBuilder) SelectRequiredAsMap

func (b *OpBuilder) SelectRequiredAsMap(fields map[string]ColumnRef) *OpBuilder

SelectRequiredAsMap добавляет набор required select-колонок из map[FieldName]ColumnRef. Для детерминированной генерации порядок фиксируется сортировкой по FieldName.

func (*OpBuilder) SelectRole

func (b *OpBuilder) SelectRole(role string, columns ...ColumnRef) *OpBuilder

SelectRole appends select projection to the builder.

func (*OpBuilder) SelectRoleAll

func (b *OpBuilder) SelectRoleAll(role string, table TableColumns) *OpBuilder

SelectRoleAll appends select projection to the builder.

func (*OpBuilder) SelectRoleOptional

func (b *OpBuilder) SelectRoleOptional(role string, columns ...ColumnRef) *OpBuilder

SelectRoleOptional appends select projection to the builder.

func (*OpBuilder) SelectRoleRequired

func (b *OpBuilder) SelectRoleRequired(role string, columns ...ColumnRef) *OpBuilder

SelectRoleRequired appends select projection to the builder.

func (*OpBuilder) Set

func (b *OpBuilder) Set(columns ...ColumnRef) *OpBuilder

Set sets builder field value.

func (*OpBuilder) SetTable

func (b *OpBuilder) SetTable(table TableColumns, except ...ColumnRef) *OpBuilder

SetTable sets builder fields for all table columns except the excluded ones.

func (*OpBuilder) SkipLocked

func (b *OpBuilder) SkipLocked() *OpBuilder

SkipLocked configures skip behavior in the builder.

func (*OpBuilder) Stepf

func (b *OpBuilder) Stepf(format string, args ...ColumnRef) *OpBuilder

Stepf creates step component description.

func (*OpBuilder) StepfInput

func (b *OpBuilder) StepfInput(format string, inputNames ...string) *OpBuilder

StepfInput задает шаг через уже объявленные input-поля (например после WhereEqAs/Set).

func (*OpBuilder) StepfInputs

func (b *OpBuilder) StepfInputs(format string, inputs ...InputRef) *OpBuilder

StepfInputs задает шаг через типизированные input-поля.

func (*OpBuilder) StepfWhereEq

func (b *OpBuilder) StepfWhereEq(format string, columns ...ColumnRef) *OpBuilder

StepfWhereEq creates step component description.

func (*OpBuilder) WhereAnd

func (b *OpBuilder) WhereAnd(configure func(*WhereGroupBuilder)) *OpBuilder

WhereAnd appends filter condition to the builder.

func (*OpBuilder) WhereArrayContains

func (b *OpBuilder) WhereArrayContains(columns ...ColumnRef) *OpBuilder

WhereArrayContains appends filter condition to the builder.

func (*OpBuilder) WhereArrayOverlap

func (b *OpBuilder) WhereArrayOverlap(columns ...ColumnRef) *OpBuilder

WhereArrayOverlap appends filter condition to the builder.

func (*OpBuilder) WhereBetween

func (b *OpBuilder) WhereBetween(column, from, to ColumnRef) *OpBuilder

WhereBetween appends filter condition to the builder.

func (*OpBuilder) WhereEq

func (b *OpBuilder) WhereEq(columns ...ColumnRef) *OpBuilder

WhereEq appends filter condition to the builder.

func (*OpBuilder) WhereEqAll

func (b *OpBuilder) WhereEqAll(columns ...ColumnRef) *OpBuilder

WhereEqAll appends filter condition to the builder.

func (*OpBuilder) WhereEqAny

func (b *OpBuilder) WhereEqAny(columns ...ColumnRef) *OpBuilder

WhereEqAny appends filter condition to the builder.

func (*OpBuilder) WhereEqAs

func (b *OpBuilder) WhereEqAs(column ColumnRef, paramName string) *OpBuilder

WhereEqAs appends filter condition to the builder.

func (*OpBuilder) WhereEqOptionalAs

func (b *OpBuilder) WhereEqOptionalAs(column ColumnRef, paramName string) *OpBuilder

WhereEqOptionalAs appends filter condition to the builder.

func (*OpBuilder) WhereEqRequiredAs

func (b *OpBuilder) WhereEqRequiredAs(column ColumnRef, paramName string) *OpBuilder

WhereEqRequiredAs appends filter condition to the builder.

func (*OpBuilder) WhereExists

func (b *OpBuilder) WhereExists(subquery SubqueryPlan) *OpBuilder

WhereExists appends filter condition to the builder.

func (*OpBuilder) WhereGt

func (b *OpBuilder) WhereGt(columns ...ColumnRef) *OpBuilder

WhereGt appends filter condition to the builder.

func (*OpBuilder) WhereILike

func (b *OpBuilder) WhereILike(columns ...ColumnRef) *OpBuilder

WhereILike appends filter condition to the builder.

func (*OpBuilder) WhereIn

func (b *OpBuilder) WhereIn(columns ...ColumnRef) *OpBuilder

WhereIn appends filter condition to the builder.

func (*OpBuilder) WhereInSubquery

func (b *OpBuilder) WhereInSubquery(column ColumnRef, subquery SubqueryPlan) *OpBuilder

WhereInSubquery appends filter condition to the builder.

func (*OpBuilder) WhereJSONContains

func (b *OpBuilder) WhereJSONContains(columns ...ColumnRef) *OpBuilder

WhereJSONContains appends filter condition to the builder.

func (*OpBuilder) WhereJSONHasAny

func (b *OpBuilder) WhereJSONHasAny(columns ...ColumnRef) *OpBuilder

WhereJSONHasAny appends filter condition to the builder.

func (*OpBuilder) WhereJSONHasKey

func (b *OpBuilder) WhereJSONHasKey(columns ...ColumnRef) *OpBuilder

WhereJSONHasKey appends filter condition to the builder.

func (*OpBuilder) WhereLike

func (b *OpBuilder) WhereLike(columns ...ColumnRef) *OpBuilder

WhereLike appends filter condition to the builder.

func (*OpBuilder) WhereLt

func (b *OpBuilder) WhereLt(columns ...ColumnRef) *OpBuilder

WhereLt appends filter condition to the builder.

func (*OpBuilder) WhereNotExists

func (b *OpBuilder) WhereNotExists(subquery SubqueryPlan) *OpBuilder

WhereNotExists appends filter condition to the builder.

func (*OpBuilder) WhereNull

func (b *OpBuilder) WhereNull(columns ...ColumnRef) *OpBuilder

WhereNull appends filter condition to the builder.

func (*OpBuilder) WhereOr

func (b *OpBuilder) WhereOr(configure func(*WhereGroupBuilder)) *OpBuilder

WhereOr appends filter condition to the builder.

func (*OpBuilder) WithCTE

func (b *OpBuilder) WithCTE(ctes ...NamedCTE) *OpBuilder

WithCTE applies an additional option to the builder.

func (*OpBuilder) WithoutPolicy

func (b *OpBuilder) WithoutPolicy(name, reason string) *OpBuilder

WithoutPolicy applies an additional option to the builder.

func (*OpBuilder) WithoutPolicyScope

func (b *OpBuilder) WithoutPolicyScope(scope, reason string) *OpBuilder

WithoutPolicyScope applies an additional option to the builder.

type Operation

type Operation struct {
	Name         string
	Kind         MethodKind
	StepExpr     string
	Table        string
	Input        []Param
	Select       []ColumnRef
	SelectExpr   []SelectExpr
	GroupBy      []string
	Having       []HavingExpr
	Where        []Binding
	Predicates   []Predicate
	Set          []Binding
	Returning    []ColumnRef
	ReturningAll bool
	Joins        []Join
	With         []NamedCTE
	From         string
	OnConflict   *OnConflict
	OrderBy      []string
	BulkCopy     bool
	BulkBatch    int
	BulkAtomic   bool
	Keyset       *Keyset
	Locking      *LockingClause
	PolicyOptOut []PolicyOptOut
}

type Param

type Param struct {
	Name string
	Type string
}

func I64

func I64(name string) Param

I64 creates int64 parameter descriptor.

func Params

func Params(values ...Param) []Param

Params configures SQL parameter binding.

func (Param) Ref

func (p Param) Ref() InputRef

Ref handles ref.

type PolicyBuilder

type PolicyBuilder struct {
	// contains filtered or unexported fields
}

func Policy

func Policy(name string, tables ...TableRef) *PolicyBuilder

Policy configures query policy builder.

func (*PolicyBuilder) Build

func (b *PolicyBuilder) Build() QueryPolicy

Build builds and returns the resulting value.

func (*PolicyBuilder) ForMethods

func (b *PolicyBuilder) ForMethods(kinds ...MethodKind) *PolicyBuilder

ForMethods configures lock or scope for the builder.

func (*PolicyBuilder) ForReads

func (b *PolicyBuilder) ForReads() *PolicyBuilder

ForReads configures lock or scope for the builder.

func (*PolicyBuilder) ForWrites

func (b *PolicyBuilder) ForWrites() *PolicyBuilder

ForWrites configures lock or scope for the builder.

func (*PolicyBuilder) Scope

func (b *PolicyBuilder) Scope(scope string) *PolicyBuilder

Scope sets policy scope.

func (*PolicyBuilder) WhereArrayContains

func (b *PolicyBuilder) WhereArrayContains(columns ...ColumnRef) *PolicyBuilder

WhereArrayContains appends filter condition to the builder.

func (*PolicyBuilder) WhereArrayOverlap

func (b *PolicyBuilder) WhereArrayOverlap(columns ...ColumnRef) *PolicyBuilder

WhereArrayOverlap appends filter condition to the builder.

func (*PolicyBuilder) WhereBetween

func (b *PolicyBuilder) WhereBetween(column, from, to ColumnRef) *PolicyBuilder

WhereBetween appends filter condition to the builder.

func (*PolicyBuilder) WhereEq

func (b *PolicyBuilder) WhereEq(columns ...ColumnRef) *PolicyBuilder

WhereEq appends filter condition to the builder.

func (*PolicyBuilder) WhereEqAll

func (b *PolicyBuilder) WhereEqAll(columns ...ColumnRef) *PolicyBuilder

WhereEqAll appends filter condition to the builder.

func (*PolicyBuilder) WhereEqAny

func (b *PolicyBuilder) WhereEqAny(columns ...ColumnRef) *PolicyBuilder

WhereEqAny appends filter condition to the builder.

func (*PolicyBuilder) WhereGt

func (b *PolicyBuilder) WhereGt(columns ...ColumnRef) *PolicyBuilder

WhereGt appends filter condition to the builder.

func (*PolicyBuilder) WhereILike

func (b *PolicyBuilder) WhereILike(columns ...ColumnRef) *PolicyBuilder

WhereILike appends filter condition to the builder.

func (*PolicyBuilder) WhereIn

func (b *PolicyBuilder) WhereIn(columns ...ColumnRef) *PolicyBuilder

WhereIn appends filter condition to the builder.

func (*PolicyBuilder) WhereJSONContains

func (b *PolicyBuilder) WhereJSONContains(columns ...ColumnRef) *PolicyBuilder

WhereJSONContains appends filter condition to the builder.

func (*PolicyBuilder) WhereJSONHasAny

func (b *PolicyBuilder) WhereJSONHasAny(columns ...ColumnRef) *PolicyBuilder

WhereJSONHasAny appends filter condition to the builder.

func (*PolicyBuilder) WhereJSONHasKey

func (b *PolicyBuilder) WhereJSONHasKey(columns ...ColumnRef) *PolicyBuilder

WhereJSONHasKey appends filter condition to the builder.

func (*PolicyBuilder) WhereLike

func (b *PolicyBuilder) WhereLike(columns ...ColumnRef) *PolicyBuilder

WhereLike appends filter condition to the builder.

func (*PolicyBuilder) WhereLt

func (b *PolicyBuilder) WhereLt(columns ...ColumnRef) *PolicyBuilder

WhereLt appends filter condition to the builder.

func (*PolicyBuilder) WhereNull

func (b *PolicyBuilder) WhereNull(columns ...ColumnRef) *PolicyBuilder

WhereNull appends filter condition to the builder.

type PolicyOptOut

type PolicyOptOut struct {
	Name   string
	Scope  string
	Reason string
}

type Predicate

type Predicate struct {
	Kind      PredicateKind
	Column    string
	Expr      string
	ExprTo    string
	ExprList  []string
	Subquery  string
	GroupWith LogicalOperator
	Group     []Predicate
}

type PredicateKind

type PredicateKind string
const (
	PredicateEq            PredicateKind = "eq"
	PredicateNull          PredicateKind = "null"
	PredicateIn            PredicateKind = "in"
	PredicateGt            PredicateKind = "gt"
	PredicateLt            PredicateKind = "lt"
	PredicateLike          PredicateKind = "like"
	PredicateILike         PredicateKind = "ilike"
	PredicateBetween       PredicateKind = "between"
	PredicateGroup         PredicateKind = "group"
	PredicateExists        PredicateKind = "exists"
	PredicateNotExists     PredicateKind = "not_exists"
	PredicateInSubquery    PredicateKind = "in_subquery"
	PredicateJSONContains  PredicateKind = "json_contains"
	PredicateJSONHasKey    PredicateKind = "json_has_key"
	PredicateJSONHasAny    PredicateKind = "json_has_any"
	PredicateArrayContains PredicateKind = "array_contains"
	PredicateArrayOverlap  PredicateKind = "array_overlap"
	PredicateEqAny         PredicateKind = "eq_any"
	PredicateEqAll         PredicateKind = "eq_all"
)

type QueryPolicy

type QueryPolicy struct {
	Name        string
	Scope       string
	Tables      []string
	MethodKinds []MethodKind
	Input       []Param
	Predicates  []Predicate
}

type RawOpBuilder

type RawOpBuilder struct {
	// contains filtered or unexported fields
}

func Raw

func Raw(name string) *RawOpBuilder

Raw configures raw SQL operation builder.

func (*RawOpBuilder) Build

func (b *RawOpBuilder) Build() RawOperation

Build builds and returns the resulting value.

func (*RawOpBuilder) Inputs

func (b *RawOpBuilder) Inputs(params ...Param) *RawOpBuilder

Inputs configures component input binding.

func (*RawOpBuilder) InputsRefs

func (b *RawOpBuilder) InputsRefs(inputs ...InputRef) *RawOpBuilder

InputsRefs configures component input binding.

func (*RawOpBuilder) Plan

func (b *RawOpBuilder) Plan(plan SQLPlan) *RawOpBuilder

Plan sugar for SQL(SQLPlan).

func (*RawOpBuilder) ReturnsRowsAffected

func (b *RawOpBuilder) ReturnsRowsAffected() *RawOpBuilder

ReturnsRowsAffected handles returns rows affected.

func (*RawOpBuilder) RowsAffected

func (b *RawOpBuilder) RowsAffected() *RawOpBuilder

RowsAffected sugar for ReturnsRowsAffected().

func (*RawOpBuilder) SQL

func (b *RawOpBuilder) SQL(value any) *RawOpBuilder

SQL handles sql.

func (*RawOpBuilder) StepfInput

func (b *RawOpBuilder) StepfInput(format string, inputNames ...string) *RawOpBuilder

StepfInput creates step component description.

func (*RawOpBuilder) StepfInputs

func (b *RawOpBuilder) StepfInputs(format string, inputs ...InputRef) *RawOpBuilder

StepfInputs creates step component description.

func (*RawOpBuilder) UsesTables

func (b *RawOpBuilder) UsesTables(tables ...TableRef) *RawOpBuilder

UsesTables handles uses tables.

type RawOperation

type RawOperation struct {
	Name                string
	StepExpr            string
	Input               []Param
	Tables              []string
	SQL                 string
	ReturnsRowsAffected bool
}

func RawList

func RawList(builders ...*RawOpBuilder) []RawOperation

RawList собирает набор raw-операций из билдера без ручного []RawOperation и Build().

type SQLExpr

type SQLExpr string

func Expr

func Expr(raw string) SQLExpr

Expr creates SQL expression helper value.

func JSONBObjectExpr

func JSONBObjectExpr(pairs ...JSONBPair) SQLExpr

JSONBObjectExpr builds jsonb_build_object SQL expression from key-value pairs.

func ParamExpr

func ParamExpr(name string) SQLExpr

ParamExpr configures SQL parameter binding.

func StringExpr

func StringExpr(value string) SQLExpr

StringExpr returns string-based expression value.

type SQLPlan

type SQLPlan struct {
	SQL   string
	Input []Param
}

type SelectExpr

type SelectExpr struct {
	Expr      string
	FieldName string
	Type      string
}

type SubqueryBuilder

type SubqueryBuilder struct {
	// contains filtered or unexported fields
}

func Subquery

func Subquery(table TableRef) *SubqueryBuilder

Subquery configures subquery builder.

func (*SubqueryBuilder) Build

func (b *SubqueryBuilder) Build() SubqueryPlan

Build builds and returns the resulting value.

func (*SubqueryBuilder) Join

func (b *SubqueryBuilder) Join(table TableRef, left, right ColumnRef) *SubqueryBuilder

Join appends join clause to the builder.

func (*SubqueryBuilder) LeftJoin

func (b *SubqueryBuilder) LeftJoin(table TableRef, left, right ColumnRef) *SubqueryBuilder

LeftJoin appends left join clause to the builder.

func (*SubqueryBuilder) RightJoin

func (b *SubqueryBuilder) RightJoin(table TableRef, left, right ColumnRef) *SubqueryBuilder

RightJoin appends right join clause to the builder.

func (*SubqueryBuilder) Select

func (b *SubqueryBuilder) Select(columns ...ColumnRef) *SubqueryBuilder

Select appends select projection to the builder.

func (*SubqueryBuilder) SelectExpr

func (b *SubqueryBuilder) SelectExpr(expr string) *SubqueryBuilder

SelectExpr appends select projection to the builder.

func (*SubqueryBuilder) WhereEq

func (b *SubqueryBuilder) WhereEq(columns ...ColumnRef) *SubqueryBuilder

WhereEq appends filter condition to the builder.

func (*SubqueryBuilder) WhereEqColumns

func (b *SubqueryBuilder) WhereEqColumns(left, right ColumnRef) *SubqueryBuilder

WhereEqColumns appends filter condition to the builder.

func (*SubqueryBuilder) WhereNull

func (b *SubqueryBuilder) WhereNull(columns ...ColumnRef) *SubqueryBuilder

WhereNull appends filter condition to the builder.

type SubqueryPlan

type SubqueryPlan struct {
	SQL   string
	Input []Param
}

type TableColumns

type TableColumns interface {
	TableRef
	Columns() []ColumnRef
}

type TableRef

type TableRef interface {
	TableName() string
}

type TxBranchBuilder

type TxBranchBuilder struct {
	// contains filtered or unexported fields
}

func (*TxBranchBuilder) Call

func (b *TxBranchBuilder) Call(method MethodRef) *TxBranchBuilder

Call handles call.

func (*TxBranchBuilder) CallAs

func (b *TxBranchBuilder) CallAs(method MethodRef, saveAs string) *TxBranchBuilder

CallAs handles call as.

func (*TxBranchBuilder) CallAsRef

func (b *TxBranchBuilder) CallAsRef(method MethodRef, saveAs InputRef) *TxBranchBuilder

CallAsRef handles call as ref.

func (*TxBranchBuilder) CallAsStepf

func (b *TxBranchBuilder) CallAsStepf(method MethodRef, saveAs, format string, inputNames ...string) *TxBranchBuilder

CallAsStepf handles call as stepf.

func (*TxBranchBuilder) CallAsStepfRef

func (b *TxBranchBuilder) CallAsStepfRef(
	method MethodRef,
	saveAs InputRef,
	format string,
	inputs ...InputRef,
) *TxBranchBuilder

CallAsStepfRef handles call as stepf ref.

func (*TxBranchBuilder) CallStepf

func (b *TxBranchBuilder) CallStepf(method MethodRef, format string, inputNames ...string) *TxBranchBuilder

CallStepf handles call stepf.

func (*TxBranchBuilder) CallStepfInputs

func (b *TxBranchBuilder) CallStepfInputs(method MethodRef, format string, inputs ...InputRef) *TxBranchBuilder

CallStepfInputs handles call stepf inputs.

func (*TxBranchBuilder) Exec

func (b *TxBranchBuilder) Exec(stepName string, sql any) *TxBranchBuilder

Exec handles exec.

func (*TxBranchBuilder) ExecFailIfNoRows

func (b *TxBranchBuilder) ExecFailIfNoRows(stepName string, sql any) *TxBranchBuilder

ExecFailIfNoRows handles exec fail if no rows.

func (*TxBranchBuilder) Execf

func (b *TxBranchBuilder) Execf(stepFormat string, sql any, inputNames ...string) *TxBranchBuilder

Execf handles execf.

func (*TxBranchBuilder) ExecfFailIfNoRows

func (b *TxBranchBuilder) ExecfFailIfNoRows(stepFormat string, sql any, inputNames ...string) *TxBranchBuilder

ExecfFailIfNoRows handles execf fail if no rows.

func (*TxBranchBuilder) ExecfFailIfNoRowsInputs

func (b *TxBranchBuilder) ExecfFailIfNoRowsInputs(stepFormat string, sql any, inputs ...InputRef) *TxBranchBuilder

ExecfFailIfNoRowsInputs handles execf fail if no rows inputs.

func (*TxBranchBuilder) ExecfInputs

func (b *TxBranchBuilder) ExecfInputs(stepFormat string, sql any, inputs ...InputRef) *TxBranchBuilder

ExecfInputs handles execf inputs.

func (*TxBranchBuilder) If

func (b *TxBranchBuilder) If(
	conditionExpr string,
	onTrue func(*TxBranchBuilder),
	onFalse ...func(*TxBranchBuilder),
) *TxBranchBuilder

If handles if.

func (*TxBranchBuilder) WhenExists

func (b *TxBranchBuilder) WhenExists(
	stepName string,
	existsSQL any,
	onTrue func(*TxBranchBuilder),
	onFalse ...func(*TxBranchBuilder),
) *TxBranchBuilder

WhenExists handles when exists.

type TxBuilder

type TxBuilder struct {
	// contains filtered or unexported fields
}

func Tx

func Tx(name string) *TxBuilder

Tx configures transaction script builder.

func (*TxBuilder) Build

func (b *TxBuilder) Build() TxScript

Build builds and returns the resulting value.

func (*TxBuilder) Call

func (b *TxBuilder) Call(method MethodRef) *TxBuilder

Call handles call.

func (*TxBuilder) CallAs

func (b *TxBuilder) CallAs(method MethodRef, saveAs string) *TxBuilder

CallAs вызывает метод и сохраняет его результат в SaveAs-алиас. Значение алиаса можно автоматически использовать в следующих Call-шагах: если входной параметр следующего метода совпадает с SaveAs, генератор подставит значение предыдущего шага.

func (*TxBuilder) CallAsRef

func (b *TxBuilder) CallAsRef(method MethodRef, saveAs InputRef) *TxBuilder

CallAsRef handles call as ref.

func (*TxBuilder) CallAsStepf

func (b *TxBuilder) CallAsStepf(method MethodRef, saveAs, format string, inputNames ...string) *TxBuilder

CallAsStepf handles call as stepf.

func (*TxBuilder) CallAsStepfRef

func (b *TxBuilder) CallAsStepfRef(method MethodRef, saveAs InputRef, format string, inputs ...InputRef) *TxBuilder

CallAsStepfRef handles call as stepf ref.

func (*TxBuilder) CallStepf

func (b *TxBuilder) CallStepf(method MethodRef, format string, inputNames ...string) *TxBuilder

CallStepf handles call stepf.

func (*TxBuilder) CallStepfInputs

func (b *TxBuilder) CallStepfInputs(method MethodRef, format string, inputs ...InputRef) *TxBuilder

CallStepfInputs handles call stepf inputs.

func (*TxBuilder) Exec

func (b *TxBuilder) Exec(stepName string, sql any) *TxBuilder

Exec handles exec.

func (*TxBuilder) ExecFailIfNoRows

func (b *TxBuilder) ExecFailIfNoRows(stepName string, sql any) *TxBuilder

ExecFailIfNoRows handles exec fail if no rows.

func (*TxBuilder) Execf

func (b *TxBuilder) Execf(stepFormat string, sql any, inputNames ...string) *TxBuilder

Execf handles execf.

func (*TxBuilder) ExecfFailIfNoRows

func (b *TxBuilder) ExecfFailIfNoRows(stepFormat string, sql any, inputNames ...string) *TxBuilder

ExecfFailIfNoRows handles execf fail if no rows.

func (*TxBuilder) ExecfFailIfNoRowsInputs

func (b *TxBuilder) ExecfFailIfNoRowsInputs(stepFormat string, sql any, inputs ...InputRef) *TxBuilder

ExecfFailIfNoRowsInputs handles execf fail if no rows inputs.

func (*TxBuilder) ExecfInputs

func (b *TxBuilder) ExecfInputs(stepFormat string, sql any, inputs ...InputRef) *TxBuilder

ExecfInputs handles execf inputs.

func (*TxBuilder) If

func (b *TxBuilder) If(
	conditionExpr string,
	onTrue func(*TxBranchBuilder),
	onFalse ...func(*TxBranchBuilder),
) *TxBuilder

If handles if.

func (*TxBuilder) IfStep

func (b *TxBuilder) IfStep(
	stepName string,
	conditionExpr string,
	onTrue func(*TxBranchBuilder),
	onFalse ...func(*TxBranchBuilder),
) *TxBuilder

IfStep handles if step.

func (*TxBuilder) Inputs

func (b *TxBuilder) Inputs(params ...Param) *TxBuilder

Inputs configures component input binding.

func (*TxBuilder) InputsRefs

func (b *TxBuilder) InputsRefs(inputs ...InputRef) *TxBuilder

InputsRefs configures component input binding.

func (*TxBuilder) RetryOn

func (b *TxBuilder) RetryOn(maxRetries int, sqlStates ...string) *TxBuilder

RetryOn handles retry on.

func (*TxBuilder) RetryOnSerialization

func (b *TxBuilder) RetryOnSerialization(maxRetries int) *TxBuilder

RetryOnSerialization handles retry on serialization.

func (*TxBuilder) ReturnsRowsAffected

func (b *TxBuilder) ReturnsRowsAffected() *TxBuilder

ReturnsRowsAffected handles returns rows affected.

func (*TxBuilder) StepfInput

func (b *TxBuilder) StepfInput(format string, inputNames ...string) *TxBuilder

StepfInput creates step component description.

func (*TxBuilder) StepfInputs

func (b *TxBuilder) StepfInputs(format string, inputs ...InputRef) *TxBuilder

StepfInputs creates step component description.

func (*TxBuilder) UsesTables

func (b *TxBuilder) UsesTables(tables ...TableRef) *TxBuilder

UsesTables handles uses tables.

func (*TxBuilder) WhenExists

func (b *TxBuilder) WhenExists(
	stepName string,
	existsSQL any,
	onTrue func(*TxBranchBuilder),
	onFalse ...func(*TxBranchBuilder),
) *TxBuilder

WhenExists handles when exists.

type TxScript

type TxScript struct {
	Name                string
	StepExpr            string
	Input               []Param
	Tables              []string
	Steps               []TxStep
	ReturnsRowsAffected bool
	RetryOnSQLStates    []string
	RetryMaxAttempts    int
}

type TxStep

type TxStep struct {
	StepExpr      string
	Kind          TxStepKind
	SQL           string
	Method        string
	SaveAs        string
	SaveAsType    string
	ConditionExpr string
	ThenSteps     []TxStep
	ElseSteps     []TxStep
	FailIfNoRows  bool
}

type TxStepKind

type TxStepKind string
const (
	TxStepSQL        TxStepKind = "sql"
	TxStepCall       TxStepKind = "call"
	TxStepIf         TxStepKind = "if"
	TxStepWhenExists TxStepKind = "when_exists"
)

type WhereGroupBuilder

type WhereGroupBuilder struct {
	// contains filtered or unexported fields
}

func (*WhereGroupBuilder) And

func (g *WhereGroupBuilder) And(configure func(*WhereGroupBuilder)) *WhereGroupBuilder

And creates predicate for query conditions.

func (*WhereGroupBuilder) ArrayContains

func (g *WhereGroupBuilder) ArrayContains(columns ...ColumnRef) *WhereGroupBuilder

ArrayContains creates predicate for query conditions.

func (*WhereGroupBuilder) ArrayOverlap

func (g *WhereGroupBuilder) ArrayOverlap(columns ...ColumnRef) *WhereGroupBuilder

ArrayOverlap creates predicate for query conditions.

func (*WhereGroupBuilder) Between

func (g *WhereGroupBuilder) Between(column, from, to ColumnRef) *WhereGroupBuilder

Between creates predicate for query conditions.

func (*WhereGroupBuilder) Eq

func (g *WhereGroupBuilder) Eq(columns ...ColumnRef) *WhereGroupBuilder

Eq creates predicate for query conditions.

func (*WhereGroupBuilder) EqAll

func (g *WhereGroupBuilder) EqAll(columns ...ColumnRef) *WhereGroupBuilder

EqAll creates predicate for query conditions.

func (*WhereGroupBuilder) EqAny

func (g *WhereGroupBuilder) EqAny(columns ...ColumnRef) *WhereGroupBuilder

EqAny creates predicate for query conditions.

func (*WhereGroupBuilder) Gt

func (g *WhereGroupBuilder) Gt(columns ...ColumnRef) *WhereGroupBuilder

Gt creates predicate for query conditions.

func (*WhereGroupBuilder) ILike

func (g *WhereGroupBuilder) ILike(columns ...ColumnRef) *WhereGroupBuilder

ILike creates predicate for query conditions.

func (*WhereGroupBuilder) In

func (g *WhereGroupBuilder) In(columns ...ColumnRef) *WhereGroupBuilder

In creates predicate for query conditions.

func (*WhereGroupBuilder) JSONContains

func (g *WhereGroupBuilder) JSONContains(columns ...ColumnRef) *WhereGroupBuilder

JSONContains creates predicate for query conditions.

func (*WhereGroupBuilder) JSONHasAny

func (g *WhereGroupBuilder) JSONHasAny(columns ...ColumnRef) *WhereGroupBuilder

JSONHasAny creates predicate for query conditions.

func (*WhereGroupBuilder) JSONHasKey

func (g *WhereGroupBuilder) JSONHasKey(columns ...ColumnRef) *WhereGroupBuilder

JSONHasKey creates predicate for query conditions.

func (*WhereGroupBuilder) Like

func (g *WhereGroupBuilder) Like(columns ...ColumnRef) *WhereGroupBuilder

Like creates predicate for query conditions.

func (*WhereGroupBuilder) Lt

func (g *WhereGroupBuilder) Lt(columns ...ColumnRef) *WhereGroupBuilder

Lt creates predicate for query conditions.

func (*WhereGroupBuilder) Null

func (g *WhereGroupBuilder) Null(columns ...ColumnRef) *WhereGroupBuilder

Null creates predicate for query conditions.

func (*WhereGroupBuilder) Or

func (g *WhereGroupBuilder) Or(configure func(*WhereGroupBuilder)) *WhereGroupBuilder

Or creates predicate for query conditions.

type WithPlanBuilder

type WithPlanBuilder struct {
	// contains filtered or unexported fields
}

func With

func With() *WithPlanBuilder

With applies an additional option to the builder.

func WithPlan

func WithPlan(input []Param) *WithPlanBuilder

WithPlan applies an additional option to the builder.

func (*WithPlanBuilder) Build

func (b *WithPlanBuilder) Build() string

Build builds and returns the resulting value.

func (*WithPlanBuilder) BuildPlan

func (b *WithPlanBuilder) BuildPlan() SQLPlan

BuildPlan builds and returns the resulting value.

func (*WithPlanBuilder) Input

func (b *WithPlanBuilder) Input() []Param

Input configures component input binding.

func (*WithPlanBuilder) InsertInto

func (b *WithPlanBuilder) InsertInto(table TableRef, columns ...ColumnRef) *WithPlanBuilder

InsertInto configures insert operation builder.

func (*WithPlanBuilder) SelectCTE

func (b *WithPlanBuilder) SelectCTE(name, from string, items ...CTESelectItem) *WithPlanBuilder

SelectCTE appends select projection to the builder.

func (*WithPlanBuilder) SelectCTEBuilder

func (b *WithPlanBuilder) SelectCTEBuilder(name string, configure func(*CTESelectBuilder)) *WithPlanBuilder

SelectCTEBuilder appends select projection to the builder.

func (*WithPlanBuilder) SelectCTEFromBuilder

func (b *WithPlanBuilder) SelectCTEFromBuilder(
	name string,
	from CTEFromBuilder,
	items ...CTESelectItem,
) *WithPlanBuilder

SelectCTEFromBuilder appends select projection to the builder.

func (*WithPlanBuilder) SelectCTEFromCTE

func (b *WithPlanBuilder) SelectCTEFromCTE(name, from string, items ...CTESelectItem) *WithPlanBuilder

SelectCTEFromCTE appends select projection to the builder.

func (*WithPlanBuilder) SelectCTEFromTable

func (b *WithPlanBuilder) SelectCTEFromTable(name string, from TableRef, items ...CTESelectItem) *WithPlanBuilder

SelectCTEFromTable appends select projection to the builder.

func (*WithPlanBuilder) SelectFrom

func (b *WithPlanBuilder) SelectFrom(from string, exprs ...SQLExpr) *WithPlanBuilder

SelectFrom appends select projection to the builder.

func (*WithPlanBuilder) UpdateCTE

func (b *WithPlanBuilder) UpdateCTE(name string, table TableRef, configure func(*CTEUpdateBuilder)) *WithPlanBuilder

UpdateCTE configures update operation builder.

Jump to

Keyboard shortcuts

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