Add WEEK ref to base QL handlers

Also, added to PSQL, and SQLite ref handler
This commit is contained in:
Vivek Patel
2022-11-25 15:00:02 +01:00
committed by Jože Fortun
parent 7f260b7135
commit 279b1b0517
5 changed files with 39 additions and 8 deletions
@@ -66,6 +66,14 @@ var (
)
},
},
"week": {
Handler: func(args ...exp.Expression) exp.Expression {
return exp.NewSQLFunctionExpression("TO_CHAR",
exp.NewLiteralExpression("?::TIMESTAMPTZ", args[0]),
exp.NewLiteralExpression("?", "IW"),
)
},
},
"time": {
Handler: func(args ...exp.Expression) exp.Expression {
return exp.NewLiteralExpression("DATE_TRUNC('second', ?::TIME)::TIME", args[0])
@@ -117,11 +125,11 @@ var (
},
// functions currently unsupported in PostgreSQL store backend
//"STD": {
// "STD": {
// Handler: func(args ...exp.Expression) exp.Expression {
// return exp.NewLiteralExpression("")
// },
//},
// },
}.ExprHandlers()
)
@@ -45,6 +45,11 @@ func TestConverter(t *testing.T) {
sql: `$1::DATE`,
args: []any{"2022-07-21"},
},
{
qry: `week('2022-07-21')`,
sql: `TO_CHAR($1::TIMESTAMPTZ, $2)`,
args: []any{"2022-07-21", "IW"},
},
{
qry: `time('2022-07-21 12:41')`,
sql: `DATE_TRUNC('second', $1::TIME)::TIME`,
@@ -56,6 +56,14 @@ var (
)
},
},
"week": {
Handler: func(args ...exp.Expression) exp.Expression {
return exp.NewSQLFunctionExpression("STRFTIME",
exp.NewLiteralExpression("'%W'"),
args[0],
)
},
},
"datetime": {
Handler: func(args ...exp.Expression) exp.Expression {
return exp.NewSQLFunctionExpression("DATETIME", args[0])
@@ -81,21 +89,21 @@ var (
},
// functions currently unsupported in SQLite store backend
//"DATE_ADD": {
// "DATE_ADD": {
// Handler: func(args ...exp.Expression) exp.Expression {
// return exp.NewLiteralExpression("")
// },
//},
//"DATE_SUB": {
// },
// "DATE_SUB": {
// Handler: func(args ...exp.Expression) exp.Expression {
// return exp.NewLiteralExpression("")
// },
//},
//"STD": {
// },
// "STD": {
// Handler: func(args ...exp.Expression) exp.Expression {
// return exp.NewLiteralExpression("")
// },
//},
// },
}.ExprHandlers()
supportedSubstitutions = map[string]bool{
@@ -45,6 +45,11 @@ func TestConverter(t *testing.T) {
sql: `STRFTIME('%Y-%m-%dT00:00:00Z', ?)`,
args: []any{"2022-07-21"},
},
{
qry: `week('2022-07-21')`,
sql: `STRFTIME('%W', ?)`,
args: []any{"2022-07-21"},
},
{
qry: `datetime('2022-07-21')`,
sql: `DATETIME(?)`,
+5
View File
@@ -227,6 +227,11 @@ var (
return exp.NewSQLFunctionExpression("DAY", args[0])
},
},
"week": {
Handler: func(args ...exp.Expression) exp.Expression {
return exp.NewSQLFunctionExpression("WEEK", args[0])
},
},
"date": {
Handler: func(args ...exp.Expression) exp.Expression {
return exp.NewSQLFunctionExpression("DATE", args[0])