{"version":3,"file":"task-presets-gBDbKXvf.mjs","names":[],"sources":["../src/modules/task-presets/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 { transformTask } from '~/modules/tasks/methods';\nimport type { RawTask, Task } from '~/modules/tasks/types';\n\nimport type {\n  AdditionalDataForPreset,\n  InputTaskPreset,\n  RawTaskPreset,\n  TaskPreset,\n} from './types';\n\ntype PaginatedTaskPresets = SdkPaginated<TaskPreset>;\n\n/**\n * Get all available tasks presets\n *\n * @returns All presets' info\n */\nexport async function getAllTaskPresets(\n  opts?: ApiRequestOptions & { include?: string[] },\n): Promise<PaginatedTaskPresets> {\n  const {\n    content,\n    meta: { total, count, page },\n  } = await client.fetch<ApiResponsePaginated<RawTaskPreset>>(\n    '/task-presets',\n    {\n      query: {\n        ...apiRequestOptionsToQuery(opts),\n        include: opts?.include,\n      },\n    },\n  );\n\n  return {\n    items: content.map(transformCreatedUpdated),\n    total,\n    count,\n    page,\n  };\n}\nassignPermission(getAllTaskPresets, 'GET /task-presets', true);\n\n/**\n * Get tasks preset info\n *\n * @param presetOrId Preset or Preset's id\n *\n * @returns Preset info\n */\nexport async function getTaskPreset(\n  presetOrId: TaskPreset | string,\n): Promise<TaskPreset> {\n  const id = typeof presetOrId === 'string' ? presetOrId : presetOrId.id;\n  if (!id) {\n    throw new Error('Task preset id is required');\n  }\n\n  const {\n    content,\n  } = await client.fetch<ApiResponse<RawTaskPreset>>(\n    `/task-presets/${id}`,\n  );\n  return transformCreatedUpdated(content);\n}\nassignPermission(getTaskPreset, 'GET /task-presets/:id', true);\n\n/**\n * Create a new tasks preset\n *\n * @param preset Preset's data\n * @param namespaces\n *\n * @returns Created preset's info\n */\nexport async function createTaskPreset(\n  preset: InputTaskPreset,\n): Promise<TaskPreset> {\n  const {\n    content,\n  } = await client.fetch<ApiResponse<RawTaskPreset>>(\n    '/task-presets/',\n    {\n      method: 'POST',\n      body: preset,\n    },\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(createTaskPreset, 'POST /task-presets');\n\n/**\n * Update or create a tasks preset\n *\n * @param preset Preset's data **with id**\n *\n * @returns Updated/Created Preset's info\n */\nexport async function upsertTaskPreset(\n  { id, ...preset }: InputTaskPreset & { id: string },\n): Promise<TaskPreset> {\n  const {\n    content,\n  } = await client.fetch<ApiResponse<RawTaskPreset>>(\n    `/task-presets/${id}`,\n    {\n      method: 'PUT',\n      body: preset,\n    },\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(upsertTaskPreset, 'PUT /task-presets/:id');\n\n/**\n * Delete a tasks preset\n *\n * @param presetOrId Preset or Preset's id\n *\n * @returns Whether the preset was deleted\n */\nexport async function deleteTaskPreset(\n  presetOrId: TaskPreset | string,\n): Promise<boolean> {\n  const id = typeof presetOrId === 'string' ? presetOrId : presetOrId.id;\n  if (!id) {\n    return false;\n  }\n\n  const { content } = await client.fetch<ApiDeletedResponse>(\n    `/task-presets/${id}`,\n    {\n      method: 'DELETE',\n    },\n  );\n\n  return content.deleted;\n}\nassignPermission(deleteTaskPreset, 'DELETE /task-presets/:id');\n\n/**\n * Create a task from a preset\n *\n * @param presetOrId Preset or Preset's id\n * @param additionalData Additional data for the task\n *\n * @returns Created task's info\n */\nexport async function createTaskFromPreset(\n  presetOrId: TaskPreset | string,\n  additionalData: AdditionalDataForPreset,\n): Promise<Task> {\n  const id = typeof presetOrId === 'string' ? presetOrId : presetOrId.id;\n  if (!id) {\n    throw new Error('Task preset id is required');\n  }\n\n  const {\n    content,\n  } = await client.fetch<ApiResponse<RawTask>>(\n    `/task-presets/${id}/tasks`,\n    {\n      method: 'POST',\n      body: additionalData,\n    },\n  );\n\n  return transformTask(content);\n}\nassignPermission(createTaskFromPreset, 'POST /task-presets/:id/tasks');\n"],"mappings":";;;;;;;;;;mBAgHI;;;;;;AAlFJ,SAAsB,kBACpB;;;;yDAC+B;EAC/B,MAAM,EACJ,SACA,MAAM,EAAE,OAAO,OAAO,iBACd,OAAO,MACf,iBACA,EACE,yCACK,yBAAyB,KAAK,SACjC,qDAAS,KAAM,YAElB,CACF;AAED,SAAO;GACL,OAAO,QAAQ,IAAI,wBAAwB;GAC3C;GACA;GACA;GACD;;;;AAEH,iBAAiB,mBAAmB,qBAAqB,KAAK;;;;;;;;AAS9D,SAAsB,cACpB;;;;2DACqB;EACrB,MAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AACpE,MAAI,CAAC,GACH,OAAM,IAAI,MAAM,6BAA6B;EAG/C,MAAM,EACJ,kBACQ,OAAO,MACf,iBAAiB,KAClB;AACD,SAAO,wBAAwB,QAAQ;;;;AAEzC,iBAAiB,eAAe,yBAAyB,KAAK;;;;;;;;;AAU9D,SAAsB,iBACpB;;;;0DACqB;EACrB,MAAM,EACJ,kBACQ,OAAO,MACf,kBACA;GACE,QAAQ;GACR,MAAM;GACP,CACF;AAED,SAAO,wBAAwB,QAAQ;;;;AAEzC,iBAAiB,kBAAkB,qBAAqB;;;;;;;;AASxD,SAAsB,iBACpB;;;;wDACqB;MADrB,EAAE,aAAO;EAET,MAAM,EACJ,kBACQ,OAAO,MACf,iBAAiB,MACjB;GACE,QAAQ;GACR,MAAM;GACP,CACF;AAED,SAAO,wBAAwB,QAAQ;;;;AAEzC,iBAAiB,kBAAkB,wBAAwB;;;;;;;;AAS3D,SAAsB,iBACpB;;;;8DACkB;EAClB,MAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AACpE,MAAI,CAAC,GACH,QAAO;EAGT,MAAM,EAAE,kBAAkB,OAAO,MAC/B,iBAAiB,MACjB,EACE,QAAQ,UACT,CACF;AAED,SAAO,QAAQ;;;;AAEjB,iBAAiB,kBAAkB,2BAA2B;;;;;;;;;AAU9D,SAAsB,qBACpB,KACA;;;;sDADA,YACA,gBACe;EACf,MAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AACpE,MAAI,CAAC,GACH,OAAM,IAAI,MAAM,6BAA6B;EAG/C,MAAM,EACJ,kBACQ,OAAO,MACf,iBAAiB,GAAG,SACpB;GACE,QAAQ;GACR,MAAM;GACP,CACF;AAED,SAAO,cAAc,QAAQ;;;;AAE/B,iBAAiB,sBAAsB,+BAA+B"}