engines

package
v0.1.22 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2025 License: MIT Imports: 13 Imported by: 0

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