33 lines
1.0 KiB
JavaScript
33 lines
1.0 KiB
JavaScript
import { json, error } from '@sveltejs/kit';
|
|||
|
|
import { existsSync } from 'fs';
|
||
|
|
import { DatabaseSync } from 'node:sqlite';
|
||
|
|
import { loadHomeScreenUsers } from '../../../lib/server/emby-user-db.js';
|
||
|
|
import { applyCachedEmbyNames } from '../../../lib/server/emby-user-cache.js';
|
||
|
|
|
||
|
|
export async function POST({ request }) {
|
||
|
|
const { dbPath } = await request.json();
|
||
|
|
if (!dbPath) throw error(400, 'No dbPath provided');
|
||
|
|
if (!existsSync(dbPath)) throw error(404, `Database file not found: ${dbPath}`);
|
||
|
|
|
||
|
|
let db;
|
||
|
|
try {
|
||
|
|
db = new DatabaseSync(dbPath, { readOnly: true });
|
||
|
|
const result = loadHomeScreenUsers(db);
|
||
|
|
const enriched = applyCachedEmbyNames(result.users);
|
||
|
|
db.close();
|
||
|
|
return json({
|
||
|
|
...result,
|
||
|
|
users: enriched.users,
|
||
|
|
validation: {
|
||
|
|
...result.validation,
|
||
|
|
embyCacheMatchedUsers: enriched.cache.matchedCount,
|
||
|
|
embyCacheUserCount: enriched.cache.totalCachedUsers,
|
||
|
|
embyCacheLastSyncedAt: enriched.cache.lastSyncedAt
|
||
|
|
}
|
||
|
|
});
|
||
|
|
} catch (err) {
|
||
|
|
if (db) try { db.close(); } catch { /* ignore */ }
|
||
|
|
throw error(500, err.message);
|
||
|
|
}
|
||
|
|
}
|