From 7543fd36e0662c1d5ba2431bff59d204825c87e2 Mon Sep 17 00:00:00 2001 From: Marco Realacci Date: Thu, 22 Dec 2022 16:40:57 +0100 Subject: [PATCH 1/3] Fix data directory not creating on first run --- cmd/webapi/main.go | 8 ++++++++ service/database/database.go | 5 +++-- webui/node_modules/.vite/deps/_metadata.json | 10 +++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/cmd/webapi/main.go b/cmd/webapi/main.go index 490fec3..fec865c 100644 --- a/cmd/webapi/main.go +++ b/cmd/webapi/main.go @@ -120,6 +120,14 @@ func run() error { logger.WithError(err).Error("error creating the API server instance") return fmt.Errorf("creating the API server instance: %w", err) } + + // Create the directories if they don't exist + if err := os.MkdirAll(cfg.Data.Path, 0755); err != nil { + logger.WithError(err).Error("error creating data directory") + return fmt.Errorf("creating data directory: %w", err) + } + + router := apirouter.Handler() router, err = registerWebUI(router) diff --git a/service/database/database.go b/service/database/database.go index 0aeb9ad..dedae81 100644 --- a/service/database/database.go +++ b/service/database/database.go @@ -98,8 +98,9 @@ func New(db *sql.DB) (AppDatabase, error) { // Check if tables exist. If not, the database is empty, and we need to create the structure var tableName string //todo: check for all the tables, not just users - err := db.QueryRow(`SELECT name FROM sqlite_master WHERE type='table' AND name='users';`).Scan(&tableName) - if errors.Is(err, sql.ErrNoRows) { + err := db.QueryRow(`SELECT uid from users LIMIT 1;`).Scan(&tableName) + if err != nil { + //fmt.Println("database is empty, creating structure") sqlStmt := `CREATE TABLE "users" ( "uid" TEXT NOT NULL, "name" TEXT NOT NULL UNIQUE, diff --git a/webui/node_modules/.vite/deps/_metadata.json b/webui/node_modules/.vite/deps/_metadata.json index 6f206d3..1aabce9 100644 --- a/webui/node_modules/.vite/deps/_metadata.json +++ b/webui/node_modules/.vite/deps/_metadata.json @@ -1,23 +1,23 @@ { - "hash": "0c3e4771", - "browserHash": "01248067", + "hash": "80447977", + "browserHash": "b98131b5", "optimized": { "axios": { "src": "../../axios/index.js", "file": "axios.js", - "fileHash": "d8d02cf0", + "fileHash": "6b5eae63", "needsInterop": true }, "vue": { "src": "../../vue/dist/vue.runtime.esm-bundler.js", "file": "vue.js", - "fileHash": "f8034b26", + "fileHash": "de50261f", "needsInterop": false }, "vue-router": { "src": "../../vue-router/dist/vue-router.mjs", "file": "vue-router.js", - "fileHash": "b4ca170f", + "fileHash": "4cad12d6", "needsInterop": false } }, From 003e66d841ce0602f73eeac5fdda62f4ec4f70f6 Mon Sep 17 00:00:00 2001 From: Marco Realacci Date: Thu, 22 Dec 2022 16:51:52 +0100 Subject: [PATCH 2/3] Fix data directory creation --- cmd/webapi/main.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmd/webapi/main.go b/cmd/webapi/main.go index fec865c..81a8bbb 100644 --- a/cmd/webapi/main.go +++ b/cmd/webapi/main.go @@ -81,6 +81,12 @@ func run() error { logger.Infof("application initializing") + // Create the directories if they don't exist + if err := os.MkdirAll(cfg.Data.Path, 0755); err != nil { + logger.WithError(err).Error("error creating data directory") + return fmt.Errorf("creating data directory: %w", err) + } + // Start Database logger.Println("initializing database support") dbconn, err := sql.Open("sqlite3", cfg.DB.Filename) @@ -121,12 +127,6 @@ func run() error { return fmt.Errorf("creating the API server instance: %w", err) } - // Create the directories if they don't exist - if err := os.MkdirAll(cfg.Data.Path, 0755); err != nil { - logger.WithError(err).Error("error creating data directory") - return fmt.Errorf("creating data directory: %w", err) - } - router := apirouter.Handler() From 1fc1df577dcffb3d0cd88ad6058e9915b3a614cc Mon Sep 17 00:00:00 2001 From: Marco Realacci Date: Thu, 22 Dec 2022 17:17:28 +0100 Subject: [PATCH 3/3] Revert back db tables check --- .vscode/launch.json | 6 +++--- service/database/database.go | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 8040bd0..24ca420 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -12,9 +12,9 @@ "mode": "auto", "buildFlags": "-tags webui", "program": "./cmd/webapi", - "args": [ - "--db-filename", "/home/marco/wasa/wasadata/wasaphoto.db", "--data-path", "/home/marco/wasa/wasadata/data" - ] + //"args": [ + // "--db-filename", "/home/marco/wasa/wasadata/wasaphoto.db", "--data-path", "/home/marco/wasa/wasadata/data" + //] } ] } \ No newline at end of file diff --git a/service/database/database.go b/service/database/database.go index dedae81..2796d56 100644 --- a/service/database/database.go +++ b/service/database/database.go @@ -98,8 +98,8 @@ func New(db *sql.DB) (AppDatabase, error) { // Check if tables exist. If not, the database is empty, and we need to create the structure var tableName string //todo: check for all the tables, not just users - err := db.QueryRow(`SELECT uid from users LIMIT 1;`).Scan(&tableName) - if err != nil { + err := db.QueryRow(`SELECT name FROM sqlite_master WHERE type='table' AND name='users';`).Scan(&tableName) + if errors.Is(err, sql.ErrNoRows) { //fmt.Println("database is empty, creating structure") sqlStmt := `CREATE TABLE "users" ( "uid" TEXT NOT NULL,