import { FastifyInstance } from 'fastify'; import { DbService } from '../services/db.service.js'; export default async function quarantineRoutes(fastify: FastifyInstance, options: { dbService: DbService }) { const { dbService } = options; // List all disliked tracks (HIDDEN + WARNED states) fastify.get('/dislikes', async () => { return await dbService.getDislikedTracks(); }); // Restore a disliked track back to LIBRARY fastify.post('/dislikes/:trackId/restore', async (request, reply) => { const { trackId } = request.params as { trackId: string }; const entry = await dbService.getDislikeByTrackId(trackId); if (!entry) { return reply.code(404).send({ error: 'Dislike record not found' }); } await dbService.restoreDislike(trackId); return reply.send({ status: 'restored' }); }); // Hard-delete a disliked track immediately (skips grace period) fastify.delete('/dislikes/:trackId', async (request, reply) => { const { trackId } = request.params as { trackId: string }; const entry = await dbService.getDislikeByTrackId(trackId); if (!entry) { return reply.code(404).send({ error: 'Dislike record not found' }); } const userId = (request.headers['x-user-id'] as string) || '00000000-0000-0000-0000-000000000000'; await dbService.permanentlyDeleteTrack(userId, trackId, entry.track_path); return reply.send({ status: 'deleted' }); }); }