mydb/adapter/sqlite/helper_test.go
2023-09-18 15:15:42 +08:00

171 lines
3.1 KiB
Go

package sqlite
import (
"database/sql"
"os"
"git.hexq.cn/tiglog/mydb"
"git.hexq.cn/tiglog/mydb/internal/testsuite"
)
var settings = ConnectionURL{
Database: os.Getenv("DB_NAME"),
}
type Helper struct {
sess mydb.Session
}
func (h *Helper) Session() mydb.Session {
return h.sess
}
func (h *Helper) Adapter() string {
return "sqlite"
}
func (h *Helper) TearDown() error {
return h.sess.Close()
}
func (h *Helper) TearUp() error {
var err error
h.sess, err = Open(settings)
if err != nil {
return err
}
batch := []string{
`PRAGMA foreign_keys=OFF`,
`BEGIN TRANSACTION`,
`DROP TABLE IF EXISTS artist`,
`CREATE TABLE artist (
id integer primary key,
name varchar(60)
)`,
`DROP TABLE IF EXISTS publication`,
`CREATE TABLE publication (
id integer primary key,
title varchar(80),
author_id integer
)`,
`DROP TABLE IF EXISTS review`,
`CREATE TABLE review (
id integer primary key,
publication_id integer,
name varchar(80),
comments text,
created datetime
)`,
`DROP TABLE IF EXISTS data_types`,
`CREATE TABLE data_types (
id integer primary key,
_uint integer,
_uintptr integer,
_uint8 integer,
_uint16 int,
_uint32 int,
_uint64 int,
_int integer,
_int8 integer,
_int16 integer,
_int32 integer,
_int64 integer,
_float32 real,
_float64 real,
_byte integer,
_rune integer,
_bool integer,
_string text,
_blob blob,
_date datetime,
_nildate datetime,
_ptrdate datetime,
_defaultdate datetime default current_timestamp,
_time text
)`,
`DROP TABLE IF EXISTS stats_test`,
`CREATE TABLE stats_test (
id integer primary key,
numeric integer,
value integer
)`,
`DROP TABLE IF EXISTS composite_keys`,
`CREATE TABLE composite_keys (
code VARCHAR(255) default '',
user_id VARCHAR(255) default '',
some_val VARCHAR(255) default '',
primary key (code, user_id)
)`,
`DROP TABLE IF EXISTS "birthdays"`,
`CREATE TABLE "birthdays" (
"id" INTEGER PRIMARY KEY,
"name" VARCHAR(50) DEFAULT NULL,
"born" DATETIME DEFAULT NULL,
"born_ut" INTEGER
)`,
`DROP TABLE IF EXISTS "fibonacci"`,
`CREATE TABLE "fibonacci" (
"id" INTEGER PRIMARY KEY,
"input" INTEGER,
"output" INTEGER
)`,
`DROP TABLE IF EXISTS "is_even"`,
`CREATE TABLE "is_even" (
"input" INTEGER,
"is_even" INTEGER
)`,
`DROP TABLE IF EXISTS "CaSe_TesT"`,
`CREATE TABLE "CaSe_TesT" (
"id" INTEGER PRIMARY KEY,
"case_test" VARCHAR
)`,
`DROP TABLE IF EXISTS accounts`,
`CREATE TABLE accounts (
id integer primary key,
name varchar,
disabled integer,
created_at datetime default current_timestamp
)`,
`DROP TABLE IF EXISTS users`,
`CREATE TABLE users (
id integer primary key,
account_id integer,
username varchar UNIQUE
)`,
`DROP TABLE IF EXISTS logs`,
`CREATE TABLE logs (
id integer primary key,
message VARCHAR
)`,
`COMMIT`,
}
for _, query := range batch {
driver := h.sess.Driver().(*sql.DB)
if _, err := driver.Exec(query); err != nil {
return err
}
}
return nil
}
var _ testsuite.Helper = &Helper{}