plus and minus infinity keyword tests implemented range table tests added skip cockroach db added select test case added for range fields generator modified to generate correct types generator tests modified to include sample range table model and template generators modified to support range fields returning the T in UPPER and LOWER functions raw ranges implemented bounds set as optional dep modified dependencies modified and issue fixed range expression with templates implemented rangeExpression change to make it more type safe third parameter of constructor function fixed literals removed, functions added tests modified constructor functions used for creating range expressions NumRange converted to a constructor function from literal range_lower and range_upper renamed to lower_bound and upper_bound range literal removed PlusInfinity and MinusInfinity implemented int4 and int8 castings added issues fixed and tests checked number, ts, tstz literal and cast implemented date range literal expression modified and raw function used parent type converted from RangeExpression to Expression range type implemented for postgres range column type, function and literal expression implemented CONTAINS and OVERLAP operations added for range expressions range expressions implemented
139 lines
5 KiB
Go
139 lines
5 KiB
Go
package postgres
|
|
|
|
import "github.com/go-jet/jet/v2/internal/jet"
|
|
|
|
// Expression is common interface for all expressions.
|
|
// Can be Bool, Int, Float, String, Date, Time, Timez, Timestamp or Timestampz expressions.
|
|
type Expression = jet.Expression
|
|
|
|
// BoolExpression interface
|
|
type BoolExpression = jet.BoolExpression
|
|
|
|
// StringExpression interface
|
|
type StringExpression = jet.StringExpression
|
|
|
|
// NumericExpression interface
|
|
type NumericExpression = jet.NumericExpression
|
|
|
|
// IntegerExpression interface
|
|
type IntegerExpression = jet.IntegerExpression
|
|
|
|
// FloatExpression is interface
|
|
type FloatExpression = jet.FloatExpression
|
|
|
|
// TimeExpression interface
|
|
type TimeExpression = jet.TimeExpression
|
|
|
|
// TimezExpression interface for 'time with time zone' types
|
|
type TimezExpression = jet.TimezExpression
|
|
|
|
// DateExpression is interface for date types
|
|
type DateExpression = jet.DateExpression
|
|
|
|
// TimestampExpression interface
|
|
type TimestampExpression = jet.TimestampExpression
|
|
|
|
// TimestampzExpression interface
|
|
type TimestampzExpression = jet.TimestampzExpression
|
|
|
|
// DateRange Expression interface
|
|
type DateRange = jet.Range[DateExpression]
|
|
|
|
// TimestampRange Expression interface
|
|
type TimestampRange = jet.Range[TimestampExpression]
|
|
|
|
// TimestampzRange Expression interface
|
|
type TimestampzRange = jet.Range[TimestampzExpression]
|
|
|
|
// NumericRange Expression interface
|
|
type NumericRange = jet.Range[NumericExpression]
|
|
|
|
// Int4Range Expression interface
|
|
type Int4Range = jet.Range[IntegerExpression]
|
|
|
|
// Int8Range Expression interface
|
|
type Int8Range = jet.Range[IntegerExpression]
|
|
|
|
// BoolExp is bool expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as bool expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var BoolExp = jet.BoolExp
|
|
|
|
// IntExp is int expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as int expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var IntExp = jet.IntExp
|
|
|
|
// FloatExp is date expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as float expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var FloatExp = jet.FloatExp
|
|
|
|
// TimeExp is time expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as time expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var TimeExp = jet.TimeExp
|
|
|
|
// StringExp is string expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as string expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var StringExp = jet.StringExp
|
|
|
|
// TimezExp is time with time zone expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as time with time zone expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var TimezExp = jet.TimezExp
|
|
|
|
// DateExp is date expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as date expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var DateExp = jet.DateExp
|
|
|
|
// TimestampExp is timestamp expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as timestamp expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var TimestampExp = jet.TimestampExp
|
|
|
|
// TimestampzExp is timestamp with time zone expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as timestamp with time zone expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
var TimestampzExp = jet.TimestampzExp
|
|
|
|
// RangeExp is range expression wrapper around arbitrary expression.
|
|
// Allows go compiler to see any expression as range expression.
|
|
// Does not add sql cast to generated sql builder output.
|
|
func RangeExp[T Expression](expression T) jet.Range[T] {
|
|
return jet.RangeExp[T](expression)
|
|
}
|
|
|
|
// RawArgs is type used to pass optional arguments to Raw method
|
|
type RawArgs = map[string]interface{}
|
|
|
|
// Raw can be used for any unsupported functions, operators or expressions.
|
|
// For example: Raw("current_database()")
|
|
// Raw helper methods for each of the postgres types
|
|
var (
|
|
Raw = jet.Raw
|
|
|
|
RawBool = jet.RawBool
|
|
RawInt = jet.RawInt
|
|
RawFloat = jet.RawFloat
|
|
RawString = jet.RawString
|
|
RawTime = jet.RawTime
|
|
RawTimez = jet.RawTimez
|
|
RawTimestamp = jet.RawTimestamp
|
|
RawTimestampz = jet.RawTimestampz
|
|
RawDate = jet.RawDate
|
|
RawNumRange = jet.RawRange[jet.NumericExpression]
|
|
RawInt4Range = jet.RawRange[jet.IntegerExpression]
|
|
RawInt8Range = jet.RawRange[jet.IntegerExpression]
|
|
RawTimestampRange = jet.RawRange[jet.TimestampExpression]
|
|
RawTimestampzRange = jet.RawRange[jet.TimestampzExpression]
|
|
RawDateRange = jet.RawRange[jet.DateExpression]
|
|
)
|
|
|
|
// Func can be used to call custom or unsupported database functions.
|
|
var Func = jet.Func
|
|
|
|
// NewEnumValue creates new named enum value
|
|
var NewEnumValue = jet.NewEnumValue
|