{"version":3,"file":"bulk.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/admin/comments/bulk.ts"],"sourcesContent":["/**\n * Bulk comment operations\n *\n * POST /_emdash/api/admin/comments/bulk - Bulk status change or delete\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleCommentBulk } from \"#api/handlers/comments.js\";\nimport { isParseError, parseBody } from \"#api/parse.js\";\nimport { commentBulkBody } from \"#api/schemas.js\";\n\nexport const prerender = false;\n\nexport const POST: APIRoute = async ({ request, locals }) => {\n\tconst { emdash, user } = locals;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\ttry {\n\t\tconst body = await parseBody(request, commentBulkBody);\n\t\tif (isParseError(body)) return body;\n\n\t\t// Bulk delete requires ADMIN, bulk status change requires EDITOR\n\t\tif (body.action === \"delete\") {\n\t\t\tconst denied = requirePerm(user, \"comments:delete\");\n\t\t\tif (denied) return denied;\n\t\t} else {\n\t\t\tconst denied = requirePerm(user, \"comments:moderate\");\n\t\t\tif (denied) return denied;\n\t\t}\n\n\t\tconst result = await handleCommentBulk(emdash.db, body.ids, body.action);\n\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to perform bulk operation\", \"COMMENT_BULK_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAcA,MAAa,YAAY;AAEzB,MAAa,OAAiB,OAAO,EAAE,SAAS,aAAa;CAC5D,MAAM,EAAE,QAAQ,SAAS;CAEzB,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;AAElB,KAAI;EACH,MAAM,OAAO,MAAM,UAAU,SAAS,gBAAgB;AACtD,MAAI,aAAa,KAAK,CAAE,QAAO;AAG/B,MAAI,KAAK,WAAW,UAAU;GAC7B,MAAM,SAAS,YAAY,MAAM,kBAAkB;AACnD,OAAI,OAAQ,QAAO;SACb;GACN,MAAM,SAAS,YAAY,MAAM,oBAAoB;AACrD,OAAI,OAAQ,QAAO;;AAKpB,SAAO,aAFQ,MAAM,kBAAkB,OAAO,IAAI,KAAK,KAAK,KAAK,OAAO,CAE7C;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,oCAAoC,qBAAqB"}