1
0

feat: config loading and sqlite schema

This commit is contained in:
2026-08-29 14:55:42 +02:00
parent 01ad6fbb40
commit 5545aa31fb
5 changed files with 186 additions and 0 deletions

37
server/test/db.test.ts Normal file
View File

@@ -0,0 +1,37 @@
import { describe, it, expect } from 'vitest'
import { openDatabase } from '../src/db.js'
describe('openDatabase', () => {
it('creates the full schema', () => {
const db = openDatabase(':memory:')
const tables = (
db.prepare("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").all() as {
name: string
}[]
).map((r) => r.name)
for (const t of [
'users',
'sessions',
'settings',
'collection_items',
'digital_albums',
'match_links',
'app_meta',
]) {
expect(tables).toContain(t)
}
})
it('enforces unique (user_id, discogs_release_id)', () => {
const db = openDatabase(':memory:')
db.prepare(
"INSERT INTO users (username, password_hash, is_admin) VALUES ('sam', 'x', 1)"
).run()
const insert = db.prepare(
`INSERT INTO collection_items (user_id, discogs_release_id, title, artist)
VALUES (1, 100, 'Album', 'Artist')`
)
insert.run()
expect(() => insert.run()).toThrow()
})
})