diff --git a/backend/src/db.ts b/backend/src/db.ts index 0e1286a..73ab240 100644 --- a/backend/src/db.ts +++ b/backend/src/db.ts @@ -1,8 +1,9 @@ import Database from 'better-sqlite3'; import { DB_PATH } from './config'; import { logger } from './globals'; -import { readdir, readFile } from "fs/promises"; -import { join, dirname } from "path"; +import { readdir, readFile } from "fs/promises"; +import { existsSync, mkdirSync } from "fs"; +import { join, dirname } from "path"; export let FTS5Enabled = true; @@ -55,13 +56,25 @@ export const migrate = async () => { logger.info(`Migrations done`); } -logger.info(`Loading database at ${DB_PATH}`); - -export const db = new Database(DB_PATH); +logger.info(`Loading database at ${DB_PATH}`); + +// Ensure parent directory exists (avoid better-sqlite3 directory error) +try { + const dir = dirname(DB_PATH); + // Skip if dir is current directory or drive root-like (e.g., "C:") + const isTrivialDir = dir === '.' || dir === '' || /^[A-Za-z]:\\?$/.test(dir); + if (!isTrivialDir && !existsSync(dir)) { + mkdirSync(dir, { recursive: true }); + } +} catch (e) { + logger.warn(`Failed to ensure DB directory exists: ${e}`); +} + +export const db = new Database(DB_PATH); initializeDB(); -migrate(); \ No newline at end of file +migrate(); diff --git a/frontend-vue/src/components/base/BaseButton.vue b/frontend-vue/src/components/base/BaseButton.vue index da2360f..de82723 100644 --- a/frontend-vue/src/components/base/BaseButton.vue +++ b/frontend-vue/src/components/base/BaseButton.vue @@ -46,7 +46,9 @@ const emit = defineEmits<{ const handleKeydown = (event: KeyboardEvent) => { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault() - emit('click', event as any) + const btn = event.currentTarget as HTMLButtonElement | null + // Trigger native click so type="submit" works and parent @click receives it + btn?.click() } } @@ -202,4 +204,4 @@ const handleKeydown = (event: KeyboardEvent) => { border-color: #6b7280; } } - \ No newline at end of file + diff --git a/frontend-vue/src/components/base/BaseDialog.vue b/frontend-vue/src/components/base/BaseDialog.vue index da50c04..f08dc2d 100644 --- a/frontend-vue/src/components/base/BaseDialog.vue +++ b/frontend-vue/src/components/base/BaseDialog.vue @@ -16,6 +16,7 @@ 'dialog', `dialog--${size}` ]" + tabindex="-1" @click.stop >