{"version":3,"file":"_id_.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/admin/comments/[id].ts"],"sourcesContent":["/**\n * Single comment admin endpoints\n *\n * GET    /_emdash/api/admin/comments/:id - Get comment detail\n * DELETE /_emdash/api/admin/comments/:id - Hard delete (ADMIN only)\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleCommentGet, handleCommentDelete } from \"#api/handlers/comments.js\";\n\nexport const prerender = false;\n\n/**\n * Get single comment detail (includes moderation_metadata)\n */\nexport const GET: APIRoute = async ({ params, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { id } = params;\n\n\tif (!id) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Comment ID required\", 400);\n\t}\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"comments:moderate\");\n\tif (denied) return denied;\n\n\ttry {\n\t\tconst result = await handleCommentGet(emdash.db, id);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get comment\", \"COMMENT_GET_ERROR\");\n\t}\n};\n\n/**\n * Hard delete a comment (ADMIN only)\n */\nexport const DELETE: APIRoute = async ({ params, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { id } = params;\n\n\tif (!id) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Comment ID required\", 400);\n\t}\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"comments:delete\");\n\tif (denied) return denied;\n\n\ttry {\n\t\tconst result = await handleCommentDelete(emdash.db, id);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to delete comment\", \"COMMENT_DELETE_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;AAaA,MAAa,YAAY;;;;AAKzB,MAAa,MAAgB,OAAO,EAAE,QAAQ,aAAa;CAC1D,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,OAAO;AAEf,KAAI,CAAC,GACJ,QAAO,SAAS,oBAAoB,uBAAuB,IAAI;CAGhE,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,oBAAoB;AACrD,KAAI,OAAQ,QAAO;AAEnB,KAAI;AAEH,SAAO,aADQ,MAAM,iBAAiB,OAAO,IAAI,GAAG,CACzB;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,yBAAyB,oBAAoB;;;;;;AAOzE,MAAa,SAAmB,OAAO,EAAE,QAAQ,aAAa;CAC7D,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,OAAO;AAEf,KAAI,CAAC,GACJ,QAAO,SAAS,oBAAoB,uBAAuB,IAAI;CAGhE,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,kBAAkB;AACnD,KAAI,OAAQ,QAAO;AAEnB,KAAI;AAEH,SAAO,aADQ,MAAM,oBAAoB,OAAO,IAAI,GAAG,CAC5B;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,4BAA4B,uBAAuB"}