All checks were successful
Release / Scraper / Test (push) Successful in 10s
Release / UI / Build (push) Successful in 26s
Release / v2 / Build ui-v2 (push) Successful in 17s
Release / Scraper / Docker (push) Successful in 47s
Release / UI / Docker (push) Successful in 56s
CI / Scraper / Lint (pull_request) Successful in 7s
CI / Scraper / Test (pull_request) Successful in 8s
CI / UI / Build (pull_request) Successful in 16s
CI / Scraper / Docker Push (pull_request) Has been skipped
CI / UI / Docker Push (pull_request) Has been skipped
Release / v2 / Docker / ui-v2 (push) Successful in 56s
Release / v2 / Test backend (push) Successful in 4m35s
iOS CI / Build (pull_request) Successful in 4m28s
Release / v2 / Docker / backend (push) Successful in 1m29s
Release / v2 / Docker / runner (push) Successful in 1m39s
iOS CI / Test (pull_request) Successful in 9m51s
- backend/: Go API server and runner binaries with PocketBase + MinIO storage - ui-v2/: SvelteKit frontend rewrite - docker-compose-new.yml: compose file for the v2 stack - .gitea/workflows/release-v2.yaml: CI/CD for backend, runner, and ui-v2 Docker Hub images - scripts/pb-init.sh: migrate from wget to curl, add superuser bootstrap for fresh installs - .env.example: document DOCKER_BUILDKIT=1 for Colima users
27 lines
884 B
TypeScript
27 lines
884 B
TypeScript
import { error } from '@sveltejs/kit';
|
|
import type { RequestHandler } from './$types';
|
|
import { deleteComment } from '$lib/server/pocketbase';
|
|
import { log } from '$lib/server/logger';
|
|
|
|
/**
|
|
* DELETE /api/comment/[id]
|
|
* Deletes a comment and its replies. Only the comment owner may delete.
|
|
* Requires authentication.
|
|
*/
|
|
export const DELETE: RequestHandler = async ({ params, locals }) => {
|
|
if (!locals.user) error(401, 'Login required');
|
|
|
|
const { id } = params;
|
|
|
|
try {
|
|
await deleteComment(id, locals.user.id);
|
|
return new Response(null, { status: 204 });
|
|
} catch (e) {
|
|
const msg = String(e);
|
|
if (msg.includes('Not authorized')) error(403, 'Not authorized to delete this comment');
|
|
if (msg.includes('not found')) error(404, 'Comment not found');
|
|
log.error('api/comment/[id]', 'deleteComment failed', { id, err: msg });
|
|
error(500, 'Failed to delete comment');
|
|
}
|
|
};
|