1
0

feat: discogs lookup routes (barcode/search/release preview)

Known-red tests pending later tasks:
- 'reports duplicate when release already in collection' needs
  POST /api/collection (Task 15)
- 'reports ripped...' and 'reports ambiguous...' need the test-only
  POST /api/library/albums/test-seed route (Task 16)
This commit is contained in:
2026-08-29 17:07:04 +02:00
parent e8a83eeefb
commit ded4e17849
3 changed files with 256 additions and 0 deletions

View File

@@ -2,14 +2,17 @@ import Fastify, { FastifyInstance } from 'fastify'
import Database from 'better-sqlite3'
import cookie from '@fastify/cookie'
import type { Config } from './config.js'
import { SerialQueue } from './queue.js'
import { registerAuthRoutes } from './routes/authRoutes.js'
import { registerSettingsRoutes } from './routes/settingsRoutes.js'
import { registerLookupRoutes } from './routes/lookupRoutes.js'
declare module 'fastify' {
interface FastifyInstance {
db: Database.Database
config: Config
fetchImpl: typeof fetch
discogsQueue: SerialQueue
}
interface FastifyRequest {
user?: import('./auth.js').UserRow
@@ -27,10 +30,12 @@ export async function buildApp(opts: AppOptions): Promise<FastifyInstance> {
app.decorate('db', opts.db)
app.decorate('config', opts.config)
app.decorate('fetchImpl', opts.fetchImpl ?? fetch)
app.decorate('discogsQueue', new SerialQueue({ minIntervalMs: 1100 }))
await app.register(cookie)
await registerAuthRoutes(app)
await registerSettingsRoutes(app)
await registerLookupRoutes(app)
app.get('/api/health', async () => ({ ok: true }))
return app