ydb.go

 1package dialectquery
 2
 3import "fmt"
 4
 5type Ydb struct{}
 6
 7var _ Querier = (*Ydb)(nil)
 8
 9func (c *Ydb) CreateTable(tableName string) string {
10	q := `CREATE TABLE %s (
11		version_id Uint64,
12		is_applied Bool,
13		tstamp Timestamp,
14
15		PRIMARY KEY(version_id)
16	)`
17	return fmt.Sprintf(q, tableName)
18}
19
20func (c *Ydb) InsertVersion(tableName string) string {
21	q := `INSERT INTO %s (
22		version_id, 
23		is_applied, 
24		tstamp
25	) VALUES (
26		CAST($1 AS Uint64), 
27		$2, 
28		CurrentUtcTimestamp()
29	)`
30	return fmt.Sprintf(q, tableName)
31}
32
33func (c *Ydb) DeleteVersion(tableName string) string {
34	q := `DELETE FROM %s WHERE version_id = $1`
35	return fmt.Sprintf(q, tableName)
36}
37
38func (c *Ydb) GetMigrationByVersion(tableName string) string {
39	q := `SELECT tstamp, is_applied FROM %s WHERE version_id = $1 ORDER BY tstamp DESC LIMIT 1`
40	return fmt.Sprintf(q, tableName)
41}
42
43func (c *Ydb) ListMigrations(tableName string) string {
44	q := `
45	SELECT version_id, is_applied, tstamp AS __discard_column_tstamp 
46	FROM %s ORDER BY __discard_column_tstamp DESC`
47	return fmt.Sprintf(q, tableName)
48}
49
50func (c *Ydb) GetLatestVersion(tableName string) string {
51	q := `SELECT MAX(version_id) FROM %s`
52	return fmt.Sprintf(q, tableName)
53}