From f48970d124136456f346900c57ad708f710c7cc8 Mon Sep 17 00:00:00 2001 From: Mathieu Kooiman Date: Fri, 12 Jul 2024 14:09:17 +0200 Subject: [PATCH 1/3] refactor: expose NewCustomExpression for dialects to use --- internal/jet/expression.go | 2 +- internal/jet/func_expression.go | 2 +- internal/jet/group_by_clause.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/jet/expression.go b/internal/jet/expression.go index d62920c..aedb555 100644 --- a/internal/jet/expression.go +++ b/internal/jet/expression.go @@ -278,7 +278,7 @@ type customExpression struct { parts []Serializer } -func newCustomExpression(parts ...Serializer) Expression { +func NewCustomExpression(parts ...Serializer) Expression { ret := customExpression{ parts: parts, } diff --git a/internal/jet/func_expression.go b/internal/jet/func_expression.go index 6036b8d..43c7ec3 100644 --- a/internal/jet/func_expression.go +++ b/internal/jet/func_expression.go @@ -548,7 +548,7 @@ func TO_TIMESTAMP(timestampzStr, format StringExpression) TimestampzExpression { // EXTRACT extracts time component from time expression func EXTRACT(field string, from Expression) Expression { - return newCustomExpression(Token("EXTRACT("), Token(field), Token("FROM"), from, Token(")")) + return NewCustomExpression(Token("EXTRACT("), Token(field), Token("FROM"), from, Token(")")) } // CURRENT_DATE returns current date diff --git a/internal/jet/group_by_clause.go b/internal/jet/group_by_clause.go index 5f0c4b1..59e244b 100644 --- a/internal/jet/group_by_clause.go +++ b/internal/jet/group_by_clause.go @@ -35,7 +35,7 @@ func GROUPING(expressions ...Expression) IntegerExpression { // WITH_ROLLUP operator is used with the GROUP BY clause to generate all prefixes of a group of columns including the empty list. // It creates extra rows in the result set that represent the subtotal values for each combination of columns. func WITH_ROLLUP(expressions ...Expression) GroupByClause { - return newCustomExpression( + return NewCustomExpression( parametersSerializer(expressions), Token("WITH ROLLUP"), ) } From 3ec0e2cabdc27fb68132508b5c369e01deea236e Mon Sep 17 00:00:00 2001 From: Mathieu Kooiman Date: Sat, 13 Jul 2024 17:04:33 +0200 Subject: [PATCH 2/3] refactor: NewCustomExpression -> CustomExpression --- internal/jet/expression.go | 2 +- internal/jet/func_expression.go | 2 +- internal/jet/group_by_clause.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/jet/expression.go b/internal/jet/expression.go index aedb555..05b1797 100644 --- a/internal/jet/expression.go +++ b/internal/jet/expression.go @@ -278,7 +278,7 @@ type customExpression struct { parts []Serializer } -func NewCustomExpression(parts ...Serializer) Expression { +func CustomExpression(parts ...Serializer) Expression { ret := customExpression{ parts: parts, } diff --git a/internal/jet/func_expression.go b/internal/jet/func_expression.go index 43c7ec3..7e49880 100644 --- a/internal/jet/func_expression.go +++ b/internal/jet/func_expression.go @@ -548,7 +548,7 @@ func TO_TIMESTAMP(timestampzStr, format StringExpression) TimestampzExpression { // EXTRACT extracts time component from time expression func EXTRACT(field string, from Expression) Expression { - return NewCustomExpression(Token("EXTRACT("), Token(field), Token("FROM"), from, Token(")")) + return CustomExpression(Token("EXTRACT("), Token(field), Token("FROM"), from, Token(")")) } // CURRENT_DATE returns current date diff --git a/internal/jet/group_by_clause.go b/internal/jet/group_by_clause.go index 59e244b..017bb4e 100644 --- a/internal/jet/group_by_clause.go +++ b/internal/jet/group_by_clause.go @@ -35,7 +35,7 @@ func GROUPING(expressions ...Expression) IntegerExpression { // WITH_ROLLUP operator is used with the GROUP BY clause to generate all prefixes of a group of columns including the empty list. // It creates extra rows in the result set that represent the subtotal values for each combination of columns. func WITH_ROLLUP(expressions ...Expression) GroupByClause { - return NewCustomExpression( + return CustomExpression( parametersSerializer(expressions), Token("WITH ROLLUP"), ) } From 6cabfcdc1a4b00d51b26cf3a31bc8c91d8f18441 Mon Sep 17 00:00:00 2001 From: Mathieu Kooiman Date: Sat, 13 Jul 2024 17:10:26 +0200 Subject: [PATCH 3/3] feat: expose CustomExpression+Token in mysql/postgres/sqlite --- mysql/expressions.go | 6 ++++++ postgres/expressions.go | 6 ++++++ sqlite/expressions.go | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/mysql/expressions.go b/mysql/expressions.go index b3f4ce5..53b1fa7 100644 --- a/mysql/expressions.go +++ b/mysql/expressions.go @@ -70,6 +70,12 @@ var DateTimeExp = jet.TimestampExp // Does not add sql cast to generated sql builder output. var TimestampExp = jet.TimestampExp +// CustomExpression is used to define custom expressions. +var CustomExpression = jet.CustomExpression + +// Token is used to define custom token in a custom expression. +type Token = jet.Token + // RawArgs is type used to pass optional arguments to Raw method type RawArgs = map[string]interface{} diff --git a/postgres/expressions.go b/postgres/expressions.go index 759f055..9872910 100644 --- a/postgres/expressions.go +++ b/postgres/expressions.go @@ -111,6 +111,12 @@ var ( TstzRangeExp = jet.TstzRangeExp ) +// CustomExpression is used to define custom expressions. +var CustomExpression = jet.CustomExpression + +// Token is used to define custom token in a custom expression. +type Token = jet.Token + // RawArgs is type used to pass optional arguments to Raw method type RawArgs = map[string]interface{} diff --git a/sqlite/expressions.go b/sqlite/expressions.go index 93bb7b7..42ccc96 100644 --- a/sqlite/expressions.go +++ b/sqlite/expressions.go @@ -73,6 +73,12 @@ var DateTimeExp = jet.TimestampExp // Does not add sql cast to generated sql builder output. var TimestampExp = jet.TimestampExp +// CustomExpression is used to define custom expressions. +var CustomExpression = jet.CustomExpression + +// Token is used to define custom token in a custom expression. +type Token = jet.Token + // RawArgs is type used to pass optional arguments to Raw method type RawArgs = map[string]interface{}