From 708893e5669453bf0afbdc96d7b3c84fa2317d8a Mon Sep 17 00:00:00 2001 From: Anish Lakhwara Date: Wed, 18 Sep 2024 18:47:29 -0700 Subject: [PATCH] move migrations --- db/migrations.go | 17 +++++++++++++---- db/migrations/0001.sql | 13 +++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 db/migrations/0001.sql diff --git a/db/migrations.go b/db/migrations.go index 806510c..23dd2f8 100644 --- a/db/migrations.go +++ b/db/migrations.go @@ -2,8 +2,13 @@ package mast import ( "database/sql" + "embed" + "log" ) +//go:embed migrations/0001.sql +var migration0001 embed.FS + func RunMigrations(db *sql.DB) error { // Load the cr-sqlite extension // _, err := db.Exec("SELECT load_extension('./crsqlite.so', 'sqlite3_crsqlite_init')") @@ -11,11 +16,15 @@ func RunMigrations(db *sql.DB) error { // return fmt.Errorf("failed to load cr-sqlite extension: %w", err) // } + // Read the embedded SQL file + sqlData, err := migration0001.ReadFile("migrations/0001.sql") + if err != nil { + log.Fatalf("Failed to read embedded SQL file: %v", err) + } + sqlQuery := string(sqlData) + // Create the todos table and initialize it as a CRDT - _, err := db.Exec(` - CREATE TABLE IF NOT EXISTS todos (id blob PRIMARY KEY NOT NULL, content TEXT, completed INTEGER NOT NULL DEFAULT 0); - SELECT crsql_as_crr('todos'); - `) + _, err = db.Exec(sqlQuery) if err != nil { return err } diff --git a/db/migrations/0001.sql b/db/migrations/0001.sql new file mode 100644 index 0000000..83bf625 --- /dev/null +++ b/db/migrations/0001.sql @@ -0,0 +1,13 @@ +CREATE TABLE IF NOT EXISTS todos +( + id blob PRIMARY KEY NOT NULL, + description text, + project text, + tags text, + due text, + wait text, + priority text, + urgency real, + completed integer NOT NULL DEFAULT 0 +); +SELECT crsql_as_crr('todos');