diff --git a/project/db.go b/project/db.go index c041538..cfc7a1d 100644 --- a/project/db.go +++ b/project/db.go @@ -8,23 +8,6 @@ import ( "modernc.org/ql" ) -type migration struct { - up string - down string -} - -var migrations = []migration{ - migration{ - up: `CREATE TABLE IF NOT EXISTS configs ( - key string NOT NULL, - value string NOT NULL - ); - CREATE UNIQUE INDEX IF NOT EXISTS unique_configs_key ON configs (key); - `, - down: `DROP TABLE IF EXISTS configs`, - }, -} - func openDB() *sql.DB { ql.RegisterDriver() pigeonPath := maybeSetupPigeonDir() @@ -41,22 +24,7 @@ func openDB() *sql.DB { log.Fatalf("failed to ping db: %s", err1) } - tx, err := db.Begin() - - if err != nil { - log.Fatalf("Failed to start transaction: %s", err) - } - - for _, migration := range migrations { - _, err := tx.Exec(migration.up) - if err != nil { - log.Fatalf("Migration failure: %s", err) - } - } - - if tx.Commit() != nil { - log.Fatal(err) - } + migrateUp(db) return db } diff --git a/project/migrations.go b/project/migrations.go new file mode 100644 index 0000000..a741434 --- /dev/null +++ b/project/migrations.go @@ -0,0 +1,51 @@ +package main + +import ( + "database/sql" + "log" +) + +type migration struct { + up string + down string +} + +var migrations = []migration{ + migration{ + up: `CREATE TABLE IF NOT EXISTS configs ( + key string NOT NULL, + value string NOT NULL + ); + CREATE UNIQUE INDEX IF NOT EXISTS unique_configs_key ON configs (key); + `, + down: `DROP TABLE IF EXISTS configs`, + }, + migration{ + up: `CREATE TABLE IF NOT EXISTS users ( + mhash string NOT NULL, + status string NOT NULL + ); + CREATE UNIQUE INDEX IF NOT EXISTS unique_users_mhash ON users (mhash); + `, + down: `DROP TABLE IF EXISTS users`, + }, +} + +func migrateUp(db *sql.DB) { + tx, err := db.Begin() + + if err != nil { + log.Fatalf("Failed to start transaction: %s", err) + } + + for i, migration := range migrations { + _, err := tx.Exec(migration.up) + if err != nil { + log.Fatalf("Migration failure(%d): %s", i, err) + } + } + + if tx.Commit() != nil { + log.Fatal(err) + } +} diff --git a/project/util.go b/project/util.go index b96fe13..e76f6f7 100644 --- a/project/util.go +++ b/project/util.go @@ -6,7 +6,7 @@ import ( ) func showIdentity() string { - existingKey := GetConfig("private_key") + existingKey := GetConfig("public_key") if len(existingKey) == 0 { return "NONE" }