{"version":3,"file":"get-usage-chart.mjs","names":[],"sources":["../../../../src/services/ai/usage/get-usage-chart.ts"],"sourcesContent":["import { formatAiUsageFeatureLabel } from \"../../../libs/formatters/ai-usage.js\";\nimport { copy } from \"../../../libs/i18n/index.js\";\nimport { AiGenerationsRepository } from \"../../../libs/repositories/index.js\";\nimport type { GetUsageChartQueryParams } from \"../../../schemas/ai.js\";\nimport type { AiUsageChart } from \"../../../types/response.js\";\nimport type { ServiceFn } from \"../../../utils/services/types.js\";\nimport buildUsageChartSeries from \"../helpers/build-usage-chart-series.js\";\nimport { formatDbTimestamp, getDateKey } from \"../helpers/date-helpers.js\";\nimport normalizeUsageChartQuery from \"../helpers/normalize-usage-chart-query.js\";\n\nconst getUsageChart: ServiceFn<\n\t[\n\t\t{\n\t\t\tquery: GetUsageChartQueryParams;\n\t\t},\n\t],\n\tAiUsageChart\n> = async (context, data) => {\n\tconst query = normalizeUsageChartQuery(data.query);\n\tif (!query) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tstatus: 400,\n\t\t\t\tmessage: copy(\"server:core.ai.usage.chart.invalid.date.range\"),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst AiGenerations = new AiGenerationsRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tconst rowsRes = await AiGenerations.selectUsageChartRows({\n\t\tstartDate: formatDbTimestamp(query.start),\n\t\tendDate: formatDbTimestamp(query.endExclusive),\n\t\tfeatureKey: query.featureKey,\n\t\ttenantKey: context.request.tenantKey,\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t},\n\t});\n\tif (rowsRes.error) return rowsRes;\n\n\tconst chart = buildUsageChartSeries({\n\t\trows: rowsRes.data,\n\t\tmetrics: query.metrics,\n\t\tstart: query.start,\n\t\tend: query.end,\n\t});\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: {\n\t\t\tdimension: query.dimension,\n\t\t\tmetrics: query.metrics,\n\t\t\tstartDate: getDateKey(query.start),\n\t\t\tendDate: getDateKey(query.end),\n\t\t\tcurrency: chart.currency,\n\t\t\tfeature: query.featureKey\n\t\t\t\t? {\n\t\t\t\t\t\tkey: query.featureKey,\n\t\t\t\t\t\tlabel: formatAiUsageFeatureLabel({\n\t\t\t\t\t\t\tfeatureKey: query.featureKey,\n\t\t\t\t\t\t\ttranslate: context.translate,\n\t\t\t\t\t\t}),\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\tseries: chart.series,\n\t\t},\n\t};\n};\n\nexport default getUsageChart;\n"],"mappings":"mYAUA,MAAM,EAOF,MAAO,EAAS,IAAS,CAC5B,IAAM,EAAQ,EAAyB,EAAK,KAAK,EACjD,GAAI,CAAC,EACJ,MAAO,CACN,MAAO,CACN,KAAM,QACN,OAAQ,IACR,QAAS,EAAK,+CAA+C,CAC9D,EACA,KAAM,IAAA,EACP,EAQD,IAAM,EAAU,MAAM,IALI,EACzB,EAAQ,GAAG,OACX,EAAQ,OAAO,EAGkB,CAAC,CAAC,qBAAqB,CACxD,UAAW,EAAkB,EAAM,KAAK,EACxC,QAAS,EAAkB,EAAM,YAAY,EAC7C,WAAY,EAAM,WAClB,UAAW,EAAQ,QAAQ,UAC3B,WAAY,CACX,QAAS,EACV,CACD,CAAC,EACD,GAAI,EAAQ,MAAO,OAAO,EAE1B,IAAM,EAAQ,EAAsB,CACnC,KAAM,EAAQ,KACd,QAAS,EAAM,QACf,MAAO,EAAM,MACb,IAAK,EAAM,GACZ,CAAC,EAED,MAAO,CACN,MAAO,IAAA,GACP,KAAM,CACL,UAAW,EAAM,UACjB,QAAS,EAAM,QACf,UAAW,EAAW,EAAM,KAAK,EACjC,QAAS,EAAW,EAAM,GAAG,EAC7B,SAAU,EAAM,SAChB,QAAS,EAAM,WACZ,CACA,IAAK,EAAM,WACX,MAAO,EAA0B,CAChC,WAAY,EAAM,WAClB,UAAW,EAAQ,SACpB,CAAC,CACF,EACC,KACH,OAAQ,EAAM,MACf,CACD,CACD"}