UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 3.04 kB
{"version":3,"file":"complete-stored-generation.mjs","names":[],"sources":["../../../../src/services/ai/storage/complete-stored-generation.ts"],"sourcesContent":["import type { CmsAiGenerateCompletedData } from \"../../../libs/lucid-remote/services/generate-cms-ai.js\";\nimport { AiGenerationsRepository } from \"../../../libs/repositories/index.js\";\nimport type { ServiceFn } from \"../../../utils/services/types.js\";\nimport { parseStoredTimestamp } from \"../helpers/date-helpers.js\";\nimport getRequestDurationMs from \"../helpers/get-request-duration-ms.js\";\n\nconst completeStoredGeneration: ServiceFn<\n\t[\n\t\t{\n\t\t\tresponse: CmsAiGenerateCompletedData;\n\t\t},\n\t],\n\tundefined\n> = async (context, props) => {\n\tconst AiGenerations = new AiGenerationsRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tconst existingRes = await AiGenerations.selectSingleByRequestId({\n\t\trequestId: props.response.requestId,\n\t\tselect: [\"id\", \"created_at\"],\n\t\ttenantKey: context.request.tenantKey,\n\t});\n\tif (existingRes.error) return existingRes;\n\n\tif (!existingRes.data) {\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst createdAt = parseStoredTimestamp(existingRes.data.created_at);\n\tconst durationMs = Number.isNaN(createdAt.getTime())\n\t\t? null\n\t\t: getRequestDurationMs(createdAt.getTime());\n\n\tconst updateRes = await AiGenerations.updateSingle({\n\t\tdata: {\n\t\t\tprovider_request_id: props.response.usage.providerRequestId ?? null,\n\t\t\toutput: props.response.output as Record<string, unknown>,\n\t\t\tusage: props.response.usage,\n\t\t\tmodel: props.response.usage.model,\n\t\t\tcost_currency: props.response.usage.cost.currency,\n\t\t\tcost_total_minor: props.response.usage.cost.totalCostMinor,\n\t\t\tduration_ms: durationMs,\n\t\t\tstatus: \"success\",\n\t\t\terror_message: null,\n\t\t},\n\t\twhere: [\n\t\t\t{\n\t\t\t\tkey: \"request_id\",\n\t\t\t\toperator: \"=\",\n\t\t\t\tvalue: props.response.requestId,\n\t\t\t},\n\t\t],\n\t\treturning: [\"id\"],\n\t});\n\tif (updateRes.error) return updateRes;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: undefined,\n\t};\n};\n\nexport default completeStoredGeneration;\n"],"mappings":"sLAMA,MAAM,EAOF,MAAO,EAAS,IAAU,CAC7B,IAAM,EAAgB,IAAI,EACzB,EAAQ,GAAG,OACX,EAAQ,OAAO,EAChB,EAEM,EAAc,MAAM,EAAc,wBAAwB,CAC/D,UAAW,EAAM,SAAS,UAC1B,OAAQ,CAAC,KAAM,YAAY,EAC3B,UAAW,EAAQ,QAAQ,SAC5B,CAAC,EACD,GAAI,EAAY,MAAO,OAAO,EAE9B,GAAI,CAAC,EAAY,KAChB,MAAO,CACN,MAAO,IAAA,GACP,KAAM,IAAA,EACP,EAGD,IAAM,EAAY,EAAqB,EAAY,KAAK,UAAU,EAC5D,EAAa,OAAO,MAAM,EAAU,QAAQ,CAAC,EAChD,KACA,EAAqB,EAAU,QAAQ,CAAC,EAErC,EAAY,MAAM,EAAc,aAAa,CAClD,KAAM,CACL,oBAAqB,EAAM,SAAS,MAAM,mBAAqB,KAC/D,OAAQ,EAAM,SAAS,OACvB,MAAO,EAAM,SAAS,MACtB,MAAO,EAAM,SAAS,MAAM,MAC5B,cAAe,EAAM,SAAS,MAAM,KAAK,SACzC,iBAAkB,EAAM,SAAS,MAAM,KAAK,eAC5C,YAAa,EACb,OAAQ,UACR,cAAe,IAChB,EACA,MAAO,CACN,CACC,IAAK,aACL,SAAU,IACV,MAAO,EAAM,SAAS,SACvB,CACD,EACA,UAAW,CAAC,IAAI,CACjB,CAAC,EAGD,OAFI,EAAU,MAAc,EAErB,CACN,MAAO,IAAA,GACP,KAAM,IAAA,EACP,CACD"}