[New] Constructor for time types, that accepts time.Time. (TimeT, TimezT, DateT, ...)

This commit is contained in:
go-jet 2019-08-06 11:41:45 +02:00
parent 647ef21aaf
commit 6ee2f45548
11 changed files with 182 additions and 22 deletions

View file

@ -151,6 +151,10 @@ func Time(hour, minute, second int, milliseconds ...int) TimeExpression {
return TimeExp(literal(timeStr))
}
func TimeT(t time.Time) TimeExpression {
return TimeExp(literal(t))
}
// Timez creates new time with time zone literal expression
func Timez(hour, minute, second, milliseconds, timezone int) TimezExpression {
timeStr := fmt.Sprintf("%02d:%02d:%02d.%03d %+03d", hour, minute, second, milliseconds, timezone)
@ -158,6 +162,10 @@ func Timez(hour, minute, second, milliseconds, timezone int) TimezExpression {
return TimezExp(literal(timeStr))
}
func TimezT(t time.Time) TimezExpression {
return TimezExp(literal(t))
}
// Timestamp creates new timestamp literal expression
func Timestamp(year int, month time.Month, day, hour, minute, second int, milliseconds ...int) TimestampExpression {
timeStr := fmt.Sprintf("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second)
@ -167,6 +175,10 @@ func Timestamp(year int, month time.Month, day, hour, minute, second int, millis
return TimestampExp(literal(timeStr))
}
func TimestampT(t time.Time) TimestampExpression {
return TimestampExp(literal(t))
}
// Timestampz creates new timestamp with time zone literal expression
func Timestampz(year, month, day, hour, minute, second, milliseconds, timezone int) TimestampzExpression {
timeStr := fmt.Sprintf("%04d-%02d-%02d %02d:%02d:%02d.%03d %+04d",
@ -175,6 +187,10 @@ func Timestampz(year, month, day, hour, minute, second, milliseconds, timezone i
return TimestampzExp(literal(timeStr))
}
func TimestampzT(t time.Time) TimestampzExpression {
return TimestampzExp(literal(t))
}
//Date creates new date expression
func Date(year int, month time.Month, day int) DateExpression {
timeStr := fmt.Sprintf("%04d-%02d-%02d", year, month, day)
@ -182,6 +198,10 @@ func Date(year int, month time.Month, day int) DateExpression {
return DateExp(literal(timeStr))
}
func DateT(t time.Time) DateExpression {
return DateExp(literal(t))
}
//--------------------------------------------------//
type nullLiteral struct {
expressionInterfaceImpl

View file

@ -1,7 +1,14 @@
package jet
import "testing"
import (
"testing"
"time"
)
func TestRawExpression(t *testing.T) {
assertClauseSerialize(t, RAW("current_database()"), "current_database()")
var timeT = time.Date(2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
assertClauseSerialize(t, DateT(timeT), "$1", timeT)
}

View file

@ -47,7 +47,7 @@ func AssertExecErr(t *testing.T, stmt jet.Statement, db execution.DB, errorStr s
assert.Error(t, err, errorStr)
}
func AssertJSON(t *testing.T, expectedJSON string, data interface{}) {
func AssertJSON(t *testing.T, data interface{}, expectedJSON string) {
jsonData, err := json.MarshalIndent(data, "", "\t")
assert.NilError(t, err)