Files
cursor/fixture_test.go

137 lines
3.3 KiB
Go

package cursor
import (
"testing"
"time"
"github.com/go-jet/jet/v2/mysql"
)
var (
User = newUserTable("", "user", "")
Address = newAddressTable("", "address", "")
Meeting = newMeetingTable("", "meeting", "")
MeetingRoom = newMeetingRoomTable("", "meeting_room", "")
Scratch = newScratchTable("", "scratch", "")
Spare = newSpareTable("", "spare", "")
)
type userTable struct {
mysql.Table
ID mysql.ColumnInteger
CreatedAt mysql.ColumnTimestamp
AllColumns mysql.ColumnList
}
func newUserTable(schemaName, tableName, alias string) userTable {
idCol := mysql.IntegerColumn("id")
createdAtCol := mysql.TimestampColumn("created_at")
allColumns := mysql.ColumnList{idCol, createdAtCol}
return userTable{
Table: mysql.NewTable(schemaName, tableName, alias, allColumns...),
ID: idCol,
CreatedAt: createdAtCol,
AllColumns: allColumns,
}
}
type addressTable struct {
mysql.Table
ID mysql.ColumnInteger
AllColumns mysql.ColumnList
}
func newAddressTable(schemaName, tableName, alias string) addressTable {
idCol := mysql.IntegerColumn("id")
allColumns := mysql.ColumnList{idCol}
return addressTable{
Table: mysql.NewTable(schemaName, tableName, alias, allColumns...),
ID: idCol,
AllColumns: allColumns,
}
}
type meetingTable struct {
mysql.Table
ID mysql.ColumnString
StartTime mysql.ColumnTimestamp
AllColumns mysql.ColumnList
}
func newMeetingTable(schemaName, tableName, alias string) meetingTable {
idCol := mysql.StringColumn("id")
startTimeCol := mysql.TimestampColumn("start_time")
allColumns := mysql.ColumnList{idCol, startTimeCol}
return meetingTable{
Table: mysql.NewTable(schemaName, tableName, alias, allColumns...),
ID: idCol,
StartTime: startTimeCol,
AllColumns: allColumns,
}
}
type meetingRoomTable struct {
mysql.Table
ID mysql.ColumnString
AllColumns mysql.ColumnList
}
func newMeetingRoomTable(schemaName, tableName, alias string) meetingRoomTable {
idCol := mysql.StringColumn("id")
allColumns := mysql.ColumnList{idCol}
return meetingRoomTable{
Table: mysql.NewTable(schemaName, tableName, alias, allColumns...),
ID: idCol,
AllColumns: allColumns,
}
}
type scratchTable struct {
mysql.Table
ID mysql.ColumnInteger
AllColumns mysql.ColumnList
}
func newScratchTable(schemaName, tableName, alias string) scratchTable {
idCol := mysql.IntegerColumn("id")
allColumns := mysql.ColumnList{idCol}
return scratchTable{
Table: mysql.NewTable(schemaName, tableName, alias, allColumns...),
ID: idCol,
AllColumns: allColumns,
}
}
type spareTable struct {
mysql.Table
ID mysql.ColumnInteger
AllColumns mysql.ColumnList
}
func newSpareTable(schemaName, tableName, alias string) spareTable {
idCol := mysql.IntegerColumn("id")
allColumns := mysql.ColumnList{idCol}
return spareTable{
Table: mysql.NewTable(schemaName, tableName, alias, allColumns...),
ID: idCol,
AllColumns: allColumns,
}
}
func registerMeetingCursorColumns(t *testing.T) {
t.Helper()
RegisterColumn(Meeting.ID, Meeting.StartTime)
}
func mysqlSELECTWhere(cond mysql.BoolExpression) mysql.SelectStatement {
return Meeting.SELECT(Meeting.AllColumns).WHERE(cond)
}
func mustTime(s string) time.Time {
t, err := time.Parse(time.RFC3339, s)
if err != nil {
panic(err)
}
return t
}