Help us shape the future of Go! Take the 2026 Go Developer Survey

engines

package
v0.1.19 Latest Latest
Warning

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

Go to latest
Published: Jul 24, 2025 License: MIT Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotEnoughParamsToApply   = fmt.Errorf("not enough params to apply to query")
	ErrNotLastNParamsWasApplied = fmt.Errorf("not all last N params was applied")
)

Functions

func ApplyQueryParams

func ApplyQueryParams(e Engine, query string, params []any) (string, int, error)

func Ident

func Ident(s string) string

func JsonToStruct

func JsonToStruct(field *ast.Field, prefix string, useNativeTypes bool, byFieldFieldSource bool) string

func SQLValueArrayFormatter

func SQLValueArrayFormatter[T types.ScalarTypes](e Engine, values []T) (string, error)

Types

type DuckDB

type DuckDB struct {
}

func NewDuckDB

func NewDuckDB() *DuckDB

func (DuckDB) AddObjectFields

func (e DuckDB) AddObjectFields(sqlName string, fields map[string]string) string

func (DuckDB) AggregateFuncAny

func (e DuckDB) AggregateFuncAny(sql string) string

func (DuckDB) AggregateFuncSQL

func (e DuckDB) AggregateFuncSQL(funcName, sql, path, factor string, field *ast.FieldDefinition, _ bool, args map[string]any, params []any) (string, []any, error)

func (DuckDB) ApplyFieldTransforms

func (e DuckDB) ApplyFieldTransforms(sql string, field *ast.Field, args compiler.FieldQueryArguments) string

func (DuckDB) ExtractJSONStruct

func (e DuckDB) ExtractJSONStruct(sql string, jsonStruct map[string]any) string

func (DuckDB) ExtractJSONTypedValue

func (e DuckDB) ExtractJSONTypedValue(sql, path, t string) string

func (DuckDB) ExtractNestedTypedValue

func (e DuckDB) ExtractNestedTypedValue(sql, path, t string) string

func (*DuckDB) FieldValueByPath

func (e *DuckDB) FieldValueByPath(sqlName, path string) string

func (*DuckDB) FilterOperationSQLValue

func (e *DuckDB) FilterOperationSQLValue(sqlName, path, op string, value any, params []any) (string, []any, error)

func (*DuckDB) FunctionCall added in v0.1.5

func (e *DuckDB) FunctionCall(name string, positional []any, named map[string]any) (string, error)

func (DuckDB) GeometryTransform

func (e DuckDB) GeometryTransform(sql string, field *ast.Field, args compiler.FieldQueryArguments) string

func (DuckDB) JSONTypeCast

func (e DuckDB) JSONTypeCast(sql string) string

func (*DuckDB) LateralJoin

func (e *DuckDB) LateralJoin(sql, alias string) string

func (DuckDB) MakeObject

func (e DuckDB) MakeObject(fields map[string]string) string

func (DuckDB) PackFieldsToObject

func (e DuckDB) PackFieldsToObject(prefix string, field *ast.Field) string

func (*DuckDB) RepackObject

func (e *DuckDB) RepackObject(sql string, field *ast.Field) string

func (*DuckDB) SQLValue

func (e *DuckDB) SQLValue(v any) (string, error)

func (DuckDB) TimestampTransform

func (e DuckDB) TimestampTransform(sql string, field *ast.Field, args compiler.FieldQueryArguments) string

func (*DuckDB) Type

func (e *DuckDB) Type() Type

func (*DuckDB) UnpackObjectToFieldList

func (e *DuckDB) UnpackObjectToFieldList(sql string, field *ast.Field) string

create fields list for the first level of object (struct)

type Engine

type Engine interface {
	Type() Type
	SQLValue(any) (string, error)
	FunctionCall(name string, positional []any, named map[string]any) (string, error)
	RepackObject(sqlName string, field *ast.Field) string
	UnpackObjectToFieldList(sqlName string, field *ast.Field) string
	FilterOperationSQLValue(sqlName, path, op string, value any, params []any) (string, []any, error)
	FieldValueByPath(sqlName, path string) string
	PackFieldsToObject(prefix string, field *ast.Field) string
	MakeObject(fields map[string]string) string
	AddObjectFields(sqlName string, fields map[string]string) string
	ApplyFieldTransforms(sql string, field *ast.Field, args compiler.FieldQueryArguments) string
	ExtractJSONStruct(sql string, jsonStruct map[string]any) string
	TimestampTransform(sql string, field *ast.Field, args compiler.FieldQueryArguments) string
	// ExtractNestedTypedValue extracts value from nested field by path and cast it to type
	// type can be one of: number, string, bool, "" (empty string) - for extract json as is
	ExtractNestedTypedValue(sql, path, t string) string
	LateralJoin(sql, alias string) string
}

type EngineAggregator

type EngineAggregator interface {
	// AggregateFuncSQL returns SQL for aggregate function
	Engine
	AggregateFuncSQL(funcName, sql, path, factor string, originField *ast.FieldDefinition, isHyperTable bool, args map[string]any, params []any) (string, []any, error)
	AggregateFuncAny(sql string) string
	JSONTypeCast(sql string) string
}

type EngineKeyWordExtender

type EngineKeyWordExtender interface {
	KeyWords() []string
}

type EngineQueryScanner

type EngineQueryScanner interface {
	Engine
	WarpScann(db, query string) string
	WrapExec(db, query string) string
}

type EngineTypeCaster

type EngineTypeCaster interface {
	Engine
	ToIntermediateType(*ast.Field) (string, error)
	CastFromIntermediateType(field *ast.Field, toJSON bool) (string, error)
}

type HttpEngine

type HttpEngine struct {
	*DuckDB
}

func NewHttp

func NewHttp() *HttpEngine

func (*HttpEngine) Type

func (e *HttpEngine) Type() Type

type Postgres

type Postgres struct {
}

func NewPostgres

func NewPostgres() *Postgres

func (*Postgres) AddObjectFields

func (e *Postgres) AddObjectFields(sqlName string, fields map[string]string) string

func (Postgres) AggregateFuncAny

func (e Postgres) AggregateFuncAny(sql string) string

func (Postgres) AggregateFuncSQL

func (e Postgres) AggregateFuncSQL(funcName, sql, path, factor string, field *ast.FieldDefinition, isHyperTable bool, args map[string]any, params []any) (string, []any, error)

func (Postgres) ApplyFieldTransforms

func (e Postgres) ApplyFieldTransforms(sql string, field *ast.Field, args compiler.FieldQueryArguments) string

func (*Postgres) CastFromIntermediateType

func (e *Postgres) CastFromIntermediateType(f *ast.Field, toJSON bool) (string, error)

func (Postgres) ExtractJSONStruct

func (e Postgres) ExtractJSONStruct(sql string, jsonStruct map[string]any) string

func (Postgres) ExtractNestedTypedValue

func (e Postgres) ExtractNestedTypedValue(sql, path, t string) string

func (*Postgres) FieldValueByPath

func (e *Postgres) FieldValueByPath(sqlName, path string) string

func (*Postgres) FilterOperationSQLValue

func (e *Postgres) FilterOperationSQLValue(sqlName, path, op string, value any, params []any) (string, []any, error)

TODO add compiler options to enable/disable type of operations and types support

func (*Postgres) FunctionCall added in v0.1.5

func (e *Postgres) FunctionCall(name string, positional []any, named map[string]any) (string, error)

func (Postgres) GeometryTransform

func (e Postgres) GeometryTransform(sql string, field *ast.Field, args compiler.FieldQueryArguments) string

func (Postgres) JSONTypeCast

func (e Postgres) JSONTypeCast(sql string) string

func (Postgres) LateralJoin

func (e Postgres) LateralJoin(sql, alias string) string

func (Postgres) MakeObject

func (e Postgres) MakeObject(fields map[string]string) string

func (Postgres) PackFieldsToObject

func (e Postgres) PackFieldsToObject(prefix string, field *ast.Field) string

func (*Postgres) RepackObject

func (e *Postgres) RepackObject(sql string, field *ast.Field) string

func (*Postgres) SQLValue

func (e *Postgres) SQLValue(v any) (string, error)

func (Postgres) TimestampTransform

func (e Postgres) TimestampTransform(sql string, field *ast.Field, args compiler.FieldQueryArguments) string

func (*Postgres) ToIntermediateType

func (e *Postgres) ToIntermediateType(f *ast.Field) (string, error)

func (*Postgres) Type

func (e *Postgres) Type() Type

func (*Postgres) UnpackObjectToFieldList

func (e *Postgres) UnpackObjectToFieldList(sql string, field *ast.Field) string

func (*Postgres) WarpScann

func (e *Postgres) WarpScann(db, query string) string

func (*Postgres) WrapExec

func (e *Postgres) WrapExec(db, query string) string

type SelectedField

type SelectedField struct {
	Field  *ast.Field
	OnType string // works for in inline fragments to select only some fields
}

type SelectionSet

type SelectionSet []SelectedField

func SelectedFields

func SelectedFields(ss ast.SelectionSet) SelectionSet

func (SelectionSet) AsSelectionSet added in v0.1.18

func (ss SelectionSet) AsSelectionSet() ast.SelectionSet

func (SelectionSet) ForAlias

func (ss SelectionSet) ForAlias(alias string) *SelectedField

func (SelectionSet) ForName

func (ss SelectionSet) ForName(name string) *SelectedField

func (SelectionSet) ForPath

func (ss SelectionSet) ForPath(path string) *SelectedField

func (SelectionSet) ScalarForPath added in v0.1.15

func (ss SelectionSet) ScalarForPath(path string) *SelectedField

type Type

type Type string
const (
	TypePostgres Type = "postgres"
	TypeDuckDB   Type = "duckdb"
	TypeHttp     Type = "http"
)

Jump to

Keyboard shortcuts

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