{"version":3,"file":"templates-4-HG94_R.mjs","names":[],"sources":["../src/modules/templates/methods.ts"],"sourcesContent":["import { client } from '~/lib/fetch';\nimport { transformCreatedUpdated } from '~/lib/transform';\nimport {\n  apiRequestOptionsToQuery,\n  type ApiResponse,\n  type ApiResponsePaginated,\n  type ApiRequestOptions,\n  type ApiDeletedResponse,\n  type SdkPaginated,\n} from '~/lib/api';\n\nimport { assignPermission } from '~/helpers/permissions/decorator';\n\nimport type { InputTemplate, RawTemplate, Template } from './types';\n\ntype PaginatedTemplates = SdkPaginated<Omit<Template, 'body'>> & {\n  meta: { default: string };\n};\n\n/**\n * Get all available templates\n *\n * @returns All templates' info\n */\nexport async function getAllTemplates(\n  opts?: ApiRequestOptions & { include?: string[] }\n): Promise<PaginatedTemplates> {\n  const {\n    content,\n    meta: { total, count, page, ...meta },\n  } = await client.fetch<\n    ApiResponsePaginated<Omit<RawTemplate, 'body'>, { default: string }>\n  >('/templates', {\n    query: { ...apiRequestOptionsToQuery(opts), include: opts?.include },\n  });\n\n  return {\n    items: content.map(transformCreatedUpdated),\n    total,\n    count,\n    page,\n    meta,\n  };\n}\nassignPermission(getAllTemplates, 'GET /templates', true);\n\n/**\n * Get template info\n *\n * @param templateOrId Template or Template's id\n *\n * @returns Template info\n */\nexport async function getTemplate(\n  templateOrId: Omit<Template, 'body'> | string,\n  include?: string[]\n): Promise<Template> {\n  const id = typeof templateOrId === 'string' ? templateOrId : templateOrId.id;\n  if (!id) {\n    throw new Error('Template id is required');\n  }\n\n  const { content } = await client.fetch<ApiResponse<RawTemplate>>(\n    `/templates/${id}`,\n    {\n      query: { include },\n    }\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(getTemplate, 'GET /templates/:id', true);\n\n/**\n * Create a new template\n *\n * @param template Template's data\n *\n * @returns Created template's info\n */\nexport async function createTemplate(\n  template: InputTemplate\n): Promise<Template> {\n  const { content } = await client.fetch<ApiResponse<RawTemplate>>(\n    '/templates',\n    {\n      method: 'POST',\n      body: template,\n    }\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(createTemplate, 'POST /templates');\n\n/**\n * Update or create a template\n *\n * @param template Template's data **with id**\n *\n * @returns Updated/Created Template's info\n */\nexport async function upsertTemplate({\n  id,\n  ...template\n}: InputTemplate & { id: string }): Promise<Template> {\n  const { content } = await client.fetch<ApiResponse<RawTemplate>>(\n    `/templates/${id}`,\n    {\n      method: 'PUT',\n      body: template,\n    }\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(upsertTemplate, 'PUT /templates/:id');\n\n/**\n * Delete a template\n *\n * @param templateOrId Template or Template's id\n *\n * @returns Whether the template was deleted\n */\nexport async function deleteTemplate(\n  templateOrId: Omit<Template, 'body'> | string\n): Promise<boolean> {\n  const id = typeof templateOrId === 'string' ? templateOrId : templateOrId.id;\n  if (!id) {\n    return false;\n  }\n\n  const { content } = await client.fetch<ApiDeletedResponse>(\n    `/templates/${id}`,\n    { method: 'DELETE' }\n  );\n\n  return content.deleted;\n}\nassignPermission(deleteTemplate, 'DELETE /templates/:id');\n"],"mappings":";;;;;;;;;;CA6BY;CAAO;CAAO;iBA0ExB;;;;;;AA/EF,SAAsB,gBACpB;;;;uDAC6B;EAC7B,MAAM,EACJ,SACA,qBACQ,OAAO,MAEf,cAAc,EACd,yCAAY,yBAAyB,KAAK,SAAE,qDAAS,KAAM,YAC5D,CAAC,EALM,EAAE,OAAO,OAAO,eAAS;AAOjC,SAAO;GACL,OAAO,QAAQ,IAAI,wBAAwB;GAC3C;GACA;GACA;GACA;GACD;;;;AAEH,iBAAiB,iBAAiB,kBAAkB,KAAK;;;;;;;;AASzD,SAAsB,YACpB,KACA;;;;6CADA,cACA,SACmB;EACnB,MAAM,KAAK,OAAO,iBAAiB,WAAW,eAAe,aAAa;AAC1E,MAAI,CAAC,GACH,OAAM,IAAI,MAAM,0BAA0B;EAG5C,MAAM,EAAE,kBAAkB,OAAO,MAC/B,cAAc,MACd,EACE,OAAO,EAAE,SAAS,EACnB,CACF;AAED,SAAO,wBAAwB,QAAQ;;;;AAEzC,iBAAiB,aAAa,sBAAsB,KAAK;;;;;;;;AASzD,SAAsB,eACpB;;;;0DACmB;EACnB,MAAM,EAAE,kBAAkB,OAAO,MAC/B,cACA;GACE,QAAQ;GACR,MAAM;GACP,CACF;AAED,SAAO,wBAAwB,QAAQ;;;;AAEzC,iBAAiB,gBAAgB,kBAAkB;;;;;;;;AASnD,SAAsB,eAAe;;;;uDAGiB;MAHjB,EACnC,cACG;EAEH,MAAM,EAAE,kBAAkB,OAAO,MAC/B,cAAc,MACd;GACE,QAAQ;GACR,MAAM;GACP,CACF;AAED,SAAO,wBAAwB,QAAQ;;;;AAEzC,iBAAiB,gBAAgB,qBAAqB;;;;;;;;AAStD,SAAsB,eACpB;;;;8DACkB;EAClB,MAAM,KAAK,OAAO,iBAAiB,WAAW,eAAe,aAAa;AAC1E,MAAI,CAAC,GACH,QAAO;EAGT,MAAM,EAAE,kBAAkB,OAAO,MAC/B,cAAc,MACd,EAAE,QAAQ,UAAU,CACrB;AAED,SAAO,QAAQ;;;;AAEjB,iBAAiB,gBAAgB,wBAAwB"}