forked from mirror/crumbs-original
Make db a required first parameter on all service functions (notes-service, api-utils, tags, collaborators, attachments, rate-limit, sync/server). This enables unit testing with in-memory databases via createTestDb(). Also removes the NODE_ENV=test bypass from rate-limit and adds optional now parameter for time control in tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { json } from '@sveltejs/kit';
|
|
import type { RequestHandler } from './$types.js';
|
|
import { processSyncPush, getChangesSince } from '$lib/sync/server.js';
|
|
import { fetchTagsForNotes } from '$lib/server/tags.js';
|
|
import { fetchAttachmentsForNotes } from '$lib/server/attachments.js';
|
|
import { getUserId } from '$lib/server/api-utils.js';
|
|
import { db } from '$lib/server/db/index.js';
|
|
|
|
export const POST: RequestHandler = async ({ request, ...event }) => {
|
|
const userId = getUserId(event);
|
|
const { changes } = await request.json();
|
|
|
|
if (!Array.isArray(changes)) {
|
|
return json({ error: 'Invalid changes' }, { status: 400 });
|
|
}
|
|
|
|
await processSyncPush(db, changes, userId);
|
|
return json({ success: true });
|
|
};
|
|
|
|
export const GET: RequestHandler = async ({ url, ...event }) => {
|
|
const userId = getUserId(event);
|
|
const since = parseInt(url.searchParams.get('since') || '0', 10);
|
|
const changes = await getChangesSince(db, since, userId);
|
|
|
|
const noteIds = changes.map((n) => n.id);
|
|
const tagMap = fetchTagsForNotes(db, noteIds);
|
|
const attachmentMap = fetchAttachmentsForNotes(db, noteIds);
|
|
const changesWithTags = changes.map((note) => ({
|
|
...note,
|
|
tags: tagMap.get(note.id) ?? [],
|
|
attachments: attachmentMap.get(note.id) ?? []
|
|
}));
|
|
|
|
return json(changesWithTags);
|
|
};
|