diff --git a/server/database/db.js b/server/database/db.js index dbb9d37..e805545 100644 --- a/server/database/db.js +++ b/server/database/db.js @@ -40,6 +40,22 @@ if (process.env.DATABASE_PATH) { } } +// As part of 1.19.2 we are introducing a new location for auth.db. The below handles exisitng moving legacy database from install directory to new location +const LEGACY_DB_PATH = path.join(__dirname, 'auth.db'); +if (DB_PATH !== LEGACY_DB_PATH && !fs.existsSync(DB_PATH) && fs.existsSync(LEGACY_DB_PATH)) { + try { + fs.copyFileSync(LEGACY_DB_PATH, DB_PATH); + console.log(`[MIGRATION] Copied database from ${LEGACY_DB_PATH} to ${DB_PATH}`); + for (const suffix of ['-wal', '-shm']) { + if (fs.existsSync(LEGACY_DB_PATH + suffix)) { + fs.copyFileSync(LEGACY_DB_PATH + suffix, DB_PATH + suffix); + } + } + } catch (err) { + console.warn(`[MIGRATION] Could not copy legacy database: ${err.message}`); + } +} + // Create database connection const db = new Database(DB_PATH); @@ -128,12 +144,12 @@ const userDb = { } }, - // Update last login time + // Update last login time (non-fatal — logged but not thrown) updateLastLogin: (userId) => { try { db.prepare('UPDATE users SET last_login = CURRENT_TIMESTAMP WHERE id = ?').run(userId); } catch (err) { - throw err; + console.warn('Failed to update last login:', err.message); } }, diff --git a/server/load-env.js b/server/load-env.js index 21280a4..ad9ccbb 100644 --- a/server/load-env.js +++ b/server/load-env.js @@ -1,5 +1,6 @@ // Load environment variables from .env before other imports execute. import fs from 'fs'; +import os from 'os'; import path from 'path'; import { fileURLToPath } from 'url'; import { dirname } from 'path'; @@ -22,3 +23,7 @@ try { } catch (e) { console.log('No .env file found or error reading it:', e.message); } + +if (!process.env.DATABASE_PATH) { + process.env.DATABASE_PATH = path.join(os.homedir(), '.cloudcli', 'auth.db'); +} diff --git a/server/routes/auth.js b/server/routes/auth.js index 82a7c0d..be4c38c 100644 --- a/server/routes/auth.js +++ b/server/routes/auth.js @@ -53,11 +53,11 @@ router.post('/register', async (req, res) => { // Generate token const token = generateToken(user); - // Update last login + db.prepare('COMMIT').run(); + + // Update last login (non-fatal, outside transaction) userDb.updateLastLogin(user.id); - db.prepare('COMMIT').run(); - res.json({ success: true, user: { id: user.id, username: user.username },