{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/admin/comments/index.ts"],"sourcesContent":["/**\n * Admin comment inbox\n *\n * GET /_emdash/api/admin/comments - List comments (filterable by status, collection, search)\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleCommentInbox } from \"#api/handlers/comments.js\";\nimport { isParseError, parseQuery } from \"#api/parse.js\";\nimport { commentListQuery } from \"#api/schemas.js\";\n\nexport const prerender = false;\n\n/**\n * List comments for moderation inbox\n */\nexport const GET: APIRoute = async ({ url, locals }) => {\n\tconst { emdash, user } = locals;\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 query = parseQuery(url, commentListQuery);\n\t\tif (isParseError(query)) return query;\n\n\t\tconst result = await handleCommentInbox(emdash.db, {\n\t\t\tstatus: query.status,\n\t\t\tcollection: query.collection,\n\t\t\tsearch: query.search,\n\t\t\tlimit: query.limit,\n\t\t\tcursor: query.cursor,\n\t\t});\n\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to list comments\", \"COMMENT_INBOX_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAcA,MAAa,YAAY;;;;AAKzB,MAAa,MAAgB,OAAO,EAAE,KAAK,aAAa;CACvD,MAAM,EAAE,QAAQ,SAAS;CAEzB,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,oBAAoB;AACrD,KAAI,OAAQ,QAAO;AAEnB,KAAI;EACH,MAAM,QAAQ,WAAW,KAAK,iBAAiB;AAC/C,MAAI,aAAa,MAAM,CAAE,QAAO;AAUhC,SAAO,aARQ,MAAM,mBAAmB,OAAO,IAAI;GAClD,QAAQ,MAAM;GACd,YAAY,MAAM;GAClB,QAAQ,MAAM;GACd,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,CAAC,CAEyB;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,2BAA2B,sBAAsB"}