{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/schema/collections/[slug]/index.ts"],"sourcesContent":["/**\n * Schema collection CRUD endpoints\n *\n * GET    /_emdash/api/schema/collections/{slug} - Get collection\n * PUT    /_emdash/api/schema/collections/{slug} - Update collection\n * DELETE /_emdash/api/schema/collections/{slug} - Delete collection\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { requireDb, unwrapResult } from \"#api/error.js\";\nimport {\n\thandleSchemaCollectionGet,\n\thandleSchemaCollectionUpdate,\n\thandleSchemaCollectionDelete,\n} from \"#api/index.js\";\nimport { parseBody, parseQuery, isParseError } from \"#api/parse.js\";\nimport { collectionGetQuery, updateCollectionBody } from \"#api/schemas.js\";\n\nexport const prerender = false;\n\nexport const GET: APIRoute = async ({ params, url, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst slug = params.slug!;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"schema:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(url, collectionGetQuery);\n\tif (isParseError(query)) return query;\n\n\tconst result = await handleSchemaCollectionGet(emdash.db, slug, {\n\t\tincludeFields: query.includeFields ?? false,\n\t});\n\treturn unwrapResult(result);\n};\n\nexport const PUT: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst slug = params.slug!;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"schema:manage\");\n\tif (denied) return denied;\n\n\tconst body = await parseBody(request, updateCollectionBody);\n\tif (isParseError(body)) return body;\n\n\tconst result = await handleSchemaCollectionUpdate(emdash.db, slug, body);\n\temdash.invalidateUrlPatternCache();\n\treturn unwrapResult(result);\n};\n\nexport const DELETE: APIRoute = async ({ params, url, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst slug = params.slug!;\n\tconst force = url.searchParams.get(\"force\") === \"true\";\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"schema:manage\");\n\tif (denied) return denied;\n\n\tconst result = await handleSchemaCollectionDelete(emdash.db, slug, {\n\t\tforce,\n\t});\n\temdash.invalidateUrlPatternCache();\n\treturn unwrapResult(result);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAa,YAAY;AAEzB,MAAa,MAAgB,OAAO,EAAE,QAAQ,KAAK,aAAa;CAC/D,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,OAAO,OAAO;CAEpB,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,cAAc;AAC/C,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,WAAW,KAAK,mBAAmB;AACjD,KAAI,aAAa,MAAM,CAAE,QAAO;AAKhC,QAAO,aAHQ,MAAM,0BAA0B,OAAO,IAAI,MAAM,EAC/D,eAAe,MAAM,iBAAiB,OACtC,CAAC,CACyB;;AAG5B,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACnE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,OAAO,OAAO;CAEpB,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,gBAAgB;AACjD,KAAI,OAAQ,QAAO;CAEnB,MAAM,OAAO,MAAM,UAAU,SAAS,qBAAqB;AAC3D,KAAI,aAAa,KAAK,CAAE,QAAO;CAE/B,MAAM,SAAS,MAAM,6BAA6B,OAAO,IAAI,MAAM,KAAK;AACxE,QAAO,2BAA2B;AAClC,QAAO,aAAa,OAAO;;AAG5B,MAAa,SAAmB,OAAO,EAAE,QAAQ,KAAK,aAAa;CAClE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,OAAO,OAAO;CACpB,MAAM,QAAQ,IAAI,aAAa,IAAI,QAAQ,KAAK;CAEhD,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,gBAAgB;AACjD,KAAI,OAAQ,QAAO;CAEnB,MAAM,SAAS,MAAM,6BAA6B,OAAO,IAAI,MAAM,EAClE,OACA,CAAC;AACF,QAAO,2BAA2B;AAClC,QAAO,aAAa,OAAO"}