expr

package
v0.42.5 Latest Latest
Warning

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

Go to latest
Published: Jan 27, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Any

func Any(vals ...any) bob.Expression

func Arg

func Arg(vals ...any) bob.Expression

func ArgGroup

func ArgGroup(vals ...any) bob.Expression

Like Arg, but wraps in parentheses

func Cast

func Cast(e bob.Expression, typname string) bob.Expression

func Not

func Not[T bob.Expression, B builder[T]](exp bob.Expression) T

prefix the expression with a NOT

func OP

func OP(operator string, left, right any) bob.Expression

Generic operator between a left and right val

func Quote

func Quote(aa ...string) bob.Expression

func RawQuery

func RawQuery(d bob.Dialect, q string, args ...any) bob.BaseQuery[Clause]

func ToArgGroup

func ToArgGroup[T any](vals ...T) bob.Expression

func ToArgs

func ToArgs[T any](vals ...T) bob.Expression

func X

func X[T bob.Expression, B builder[T]](exp bob.Expression, others ...bob.Expression) T

Build an expression

Types

type Builder

type Builder[T bob.Expression, B builder[T]] struct{}

To be embedded in query mods T is the chain type, this allows dialects to have custom chain methods F is function type, so that the dialect can change where it accepted. E.g. it can be modified to work as a mod B has a New() method that is used to create a new instance of T

func (Builder[T, B]) And

func (e Builder[T, B]) And(args ...bob.Expression) T

And

func (Builder[T, B]) Any

func (e Builder[T, B]) Any(vals ...any) T

func (Builder[T, B]) Arg

func (e Builder[T, B]) Arg(vals ...any) T

Comma separated list of arguments

func (Builder[T, B]) ArgGroup

func (e Builder[T, B]) ArgGroup(vals ...any) T

Comma separated list of arguments surrounded by parentheses

func (Builder[T, B]) Cast

func (e Builder[T, B]) Cast(exp bob.Expression, typname string) T

quoted and joined... something like "users"."id"

func (Builder[T, B]) Group

func (e Builder[T, B]) Group(exps ...bob.Expression) T

Add parentheses around an expressions and separate them by commas

func (Builder[T, B]) Not

func (e Builder[T, B]) Not(exp bob.Expression) T

prefix the expression with a NOT

func (Builder[T, B]) Or

func (e Builder[T, B]) Or(args ...bob.Expression) T

Or

func (Builder[T, B]) Placeholder

func (e Builder[T, B]) Placeholder(n uint) T

func (Builder[T, B]) Quote

func (e Builder[T, B]) Quote(aa ...string) T

quoted and joined... something like "users"."id"

func (Builder[T, B]) Raw

func (e Builder[T, B]) Raw(query string, args ...any) T

func (Builder[T, B]) S

func (e Builder[T, B]) S(s string) T

single quoted raw string

type CaseChain

type CaseChain[T bob.Expression, B builder[T]] func() caseExpr

func NewCase

func NewCase[T bob.Expression, B builder[T]]() CaseChain[T, B]

func (CaseChain[T, B]) Else

func (cc CaseChain[T, B]) Else(then bob.Expression) T

func (CaseChain[T, B]) End

func (cc CaseChain[T, B]) End() T

func (CaseChain[T, B]) When

func (cc CaseChain[T, B]) When(condition, then bob.Expression) CaseChain[T, B]

func (CaseChain[T, B]) WriteSQL

func (cc CaseChain[T, B]) WriteSQL(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error)

type Chain

type Chain[T bob.Expression, B builder[T]] struct {
	Base bob.Expression
}

func (Chain[T, B]) And

func (x Chain[T, B]) And(targets ...bob.Expression) T

AND

func (Chain[T, B]) As

func (x Chain[T, B]) As(alias string) bob.Expression

As does not return a new chain. Should be used at the end of an expression useful for columns

func (Chain[T, B]) Between

func (x Chain[T, B]) Between(a, b bob.Expression) T

BETWEEN a AND b

func (Chain[T, B]) Concat

func (x Chain[T, B]) Concat(targets ...bob.Expression) T

Concatenate: ||

func (Chain[T, B]) EQ

func (x Chain[T, B]) EQ(target bob.Expression) T

Equal

func (Chain[T, B]) GT

func (x Chain[T, B]) GT(target bob.Expression) T

Greater than

func (Chain[T, B]) GTE

func (x Chain[T, B]) GTE(target bob.Expression) T

Greater than or equal to

func (Chain[T, B]) In

func (x Chain[T, B]) In(vals ...bob.Expression) T

IN

func (Chain[T, B]) IsDistinctFrom

func (x Chain[T, B]) IsDistinctFrom(exp bob.Expression) T

IS DISTINCT FROM

func (Chain[T, B]) IsNotDistinctFrom

func (x Chain[T, B]) IsNotDistinctFrom(exp bob.Expression) T

IS NOT DISTINCT FROM

func (Chain[T, B]) IsNotNull

func (x Chain[T, B]) IsNotNull() T

IS NOT NUll

func (Chain[T, B]) IsNull

func (x Chain[T, B]) IsNull() T

IS NUll

func (Chain[T, B]) LT

func (x Chain[T, B]) LT(target bob.Expression) T

Less than

func (Chain[T, B]) LTE

func (x Chain[T, B]) LTE(target bob.Expression) T

Less than or equal to

func (Chain[T, B]) Like

func (x Chain[T, B]) Like(target bob.Expression) T

Like operator

func (Chain[T, B]) Minus

func (x Chain[T, B]) Minus(target bob.Expression) T

Subtract

func (Chain[T, B]) NE

func (x Chain[T, B]) NE(target bob.Expression) T

Not Equal

func (Chain[T, B]) NotBetween

func (x Chain[T, B]) NotBetween(a, b bob.Expression) T

NOT BETWEEN a AND b

func (Chain[T, B]) NotIn

func (x Chain[T, B]) NotIn(vals ...bob.Expression) T

NOT IN

func (Chain[T, B]) OP

func (x Chain[T, B]) OP(op string, target bob.Expression) T

Generic Operator

func (Chain[T, B]) Or

func (x Chain[T, B]) Or(targets ...bob.Expression) T

OR

func (Chain[T, B]) Plus

func (x Chain[T, B]) Plus(target bob.Expression) T

Addition

func (Chain[T, B]) WriteSQL

func (x Chain[T, B]) WriteSQL(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error)

WriteSQL satisfies the bob.Expression interface

type Clause

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

A Raw Clause with arguments

func (Clause) WriteSQL

func (r Clause) WriteSQL(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error)

type ColumnsExpr

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

ColumnsExpr is a set of columns that can be used in a query It is used to properly quote and format the columns in the query such as "users"."id" AS "id", "users"."name" AS "name"

func ColsForStruct

func ColsForStruct[T any](name string) ColumnsExpr

func NewColumnsExpr

func NewColumnsExpr(names ...string) ColumnsExpr

NewColumnsExpr returns a ColumnsExpr object with the given column names

func (ColumnsExpr) DisableAlias

func (c ColumnsExpr) DisableAlias() ColumnsExpr

Disables add 'AS "prefix_column_name"' when writing SQL

func (ColumnsExpr) EnableAlias

func (c ColumnsExpr) EnableAlias() ColumnsExpr

Enables adding 'AS "prefix_column_name"' when writing SQL

func (ColumnsExpr) Except

func (c ColumnsExpr) Except(cols ...string) ColumnsExpr

Except drops the given column names from the column set

func (ColumnsExpr) Names

func (c ColumnsExpr) Names() []string

Names returns the names of the columns

func (ColumnsExpr) Only

func (c ColumnsExpr) Only(cols ...string) ColumnsExpr

Only drops other column names from the column set

func (ColumnsExpr) WithAggFunc

func (c ColumnsExpr) WithAggFunc(a, b string) ColumnsExpr

func (ColumnsExpr) WithParent

func (c ColumnsExpr) WithParent(p ...string) ColumnsExpr

WithPrefix sets the parent of the columns

func (ColumnsExpr) WithPrefix

func (c ColumnsExpr) WithPrefix(prefix string) ColumnsExpr

WithPrefix sets the prefix of the aliases of the column set

func (ColumnsExpr) WriteSQL

func (c ColumnsExpr) WriteSQL(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error)

type Join

type Join struct {
	Exprs []bob.Expression
	Sep   string
}

If no separator, a space is used

func (Join) WriteSQL

func (s Join) WriteSQL(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error)

type Raw

type Raw string

func (Raw) WriteSQL

func (r Raw) WriteSQL(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error)

Jump to

Keyboard shortcuts

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