diff options
Diffstat (limited to 'src/liteq.go')
-rw-r--r-- | src/liteq.go | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/src/liteq.go b/src/liteq.go deleted file mode 100644 index 2eeff34..0000000 --- a/src/liteq.go +++ /dev/null @@ -1,117 +0,0 @@ -package liteq - -import ( - "database/sql" - "flag" - "io/ioutil" - "log/slog" - "os" - "sort" - - g "gobang" - "golite" -) - - - -func InitMigrations(db *sql.DB) { - _, err := db.Exec(` - CREATE TABLE IF NOT EXISTS migrations ( - filename TEXT PRIMARY KEY - ); - `) - g.FatalIf(err) -} - -const MIGRATIONS_DIR = "src/sql/migrations/" -func PendingMigrations(db *sql.DB) []string { - files, err := ioutil.ReadDir(MIGRATIONS_DIR) - g.FatalIf(err) - - set := make(map[string]bool) - for _, file := range files { - set[file.Name()] = true - } - - rows, err := db.Query(`SELECT filename FROM migrations;`) - g.FatalIf(err) - defer rows.Close() - - for rows.Next() { - var filename string - err := rows.Scan(&filename) - g.FatalIf(err) - delete(set, filename) - } - g.FatalIf(rows.Err()) - - difference := make([]string, 0) - for filename := range set { - difference = append(difference, filename) - } - - sort.Sort(sort.StringSlice(difference)) - return difference -} - -func RunMigrations(db *sql.DB) { - InitMigrations(db) - - stmt, err := db.Prepare(`INSERT INTO migrations (filename) VALUES (?);`) - g.FatalIf(err) - defer stmt.Close() - - for _, filename := range PendingMigrations(db) { - g.Info("Running migration file", "exec-migration-file", - "filename", filename, - ) - - tx, err := db.Begin() - g.FatalIf(err) - - sql, err := os.ReadFile(MIGRATIONS_DIR + filename) - g.FatalIf(err) - - _, err = tx.Exec(string(sql)) - g.FatalIf(err) - - _, err = tx.Stmt(stmt).Exec(filename) - g.FatalIf(err) - - err = tx.Commit() - g.FatalIf(err) - } -} - -func initDB(databasePath string) *sql.DB { - db, err := sql.Open("sqlite3", databasePath) - g.FatalIf(err) - RunMigrations(db) - return db -} - -func run(db *sql.DB) { -} - - - -var ( - databasePath = flag.String( - "f", - "q.db", - "The path to the database file", - ) -) - - -func Main() { - g.Init(slog.Group( - "versions", - "gobang", g.Version, - "golite", golite.Version, - "this", version, - )) - flag.Parse() - db := initDB(*databasePath) - run(db) -} |