UNPKG

@lucidcms/core

Version:

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

2 lines 6.71 kB
import e from"../db/query-builder/index.mjs";import{activeMediaCropSelect as t}from"./helpers/media-selects.mjs";import n from"./parents/static-repository.mjs";import r from"zod";import{sql as i}from"kysely";var a=class extends n{constructor(e,t){super(e,t,`lucid_ai_generations`)}tableSchema=r.object({id:r.number(),request_id:r.string(),provider_request_id:r.string().nullable(),feature_key:r.string(),feature_version:r.string(),tenant_key:r.string().nullable(),user_id:r.number().nullable(),target_type:r.string(),target:r.record(r.string(),r.unknown()),output:r.unknown().nullable(),usage:r.record(r.string(),r.unknown()).nullable(),model:r.string().nullable(),cost_currency:r.string().nullable(),cost_total_minor:r.number().nullable(),duration_ms:r.number().nullable(),status:r.enum([`failed`,`pending`,`success`]),error_message:r.string().nullable(),created_at:r.union([r.string(),r.date()])});columnFormats={id:this.dbAdapter.getDataType(`primary`),request_id:this.dbAdapter.getDataType(`text`),provider_request_id:this.dbAdapter.getDataType(`text`),feature_key:this.dbAdapter.getDataType(`text`),feature_version:this.dbAdapter.getDataType(`text`),tenant_key:this.dbAdapter.getDataType(`text`),user_id:this.dbAdapter.getDataType(`integer`),target_type:this.dbAdapter.getDataType(`text`),target:this.dbAdapter.getDataType(`json`),output:this.dbAdapter.getDataType(`json`),usage:this.dbAdapter.getDataType(`json`),model:this.dbAdapter.getDataType(`text`),cost_currency:this.dbAdapter.getDataType(`text`),cost_total_minor:this.dbAdapter.getDataType(`integer`),duration_ms:this.dbAdapter.getDataType(`integer`),status:this.dbAdapter.getDataType(`text`),error_message:this.dbAdapter.getDataType(`text`),created_at:this.dbAdapter.getDataType(`timestamp`)};queryConfig={tableKeys:{filters:{requestId:`lucid_ai_generations.request_id`,providerRequestId:`lucid_ai_generations.provider_request_id`,featureKey:`lucid_ai_generations.feature_key`,featureVersion:`lucid_ai_generations.feature_version`,status:`lucid_ai_generations.status`,model:`lucid_ai_generations.model`,userId:`lucid_ai_generations.user_id`,targetType:`lucid_ai_generations.target_type`,durationMs:`lucid_ai_generations.duration_ms`,createdAt:`lucid_ai_generations.created_at`},sorts:{createdAt:`lucid_ai_generations.created_at`,cost:`lucid_ai_generations.cost_total_minor`,durationMs:`lucid_ai_generations.duration_ms`}},operators:{requestId:`contains`,providerRequestId:`contains`,model:`contains`,targetType:`contains`}};async selectSingleByRequestId(t){let n=this.db.selectFrom(`lucid_ai_generations`).select(t.select).where(`request_id`,`=`,t.requestId);n=e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_ai_generations.tenant_key`});let r=await this.executeQuery(()=>n.executeTakeFirst(),{method:`selectSingleByRequestId`});return r.response.error?r.response:this.validateResponse(r,{...t.validation,mode:`single`,select:t.select})}async selectUsageChartRows(t){let n=await this.executeQuery(async()=>{let n=this.db.selectFrom(`lucid_ai_generations`).select([`created_at`,`feature_key`,`usage`,`cost_currency`,`cost_total_minor`]).where(`created_at`,`>=`,t.startDate).where(`created_at`,`<`,t.endDate);return n=e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_ai_generations.tenant_key`}),t.featureKey&&(n=n.where(`feature_key`,`=`,t.featureKey)),await n.execute()},{method:`selectUsageChartRows`});return n.response.error?n.response:this.validateResponse(n,{...t.validation,mode:`multiple`,schema:this.tableSchema.pick({created_at:!0,feature_key:!0,usage:!0,cost_currency:!0,cost_total_minor:!0}),select:[`created_at`,`feature_key`,`usage`,`cost_currency`,`cost_total_minor`]})}async selectUsageMultiple(n){let a=await this.executeQuery(async()=>{let r=this.db.selectFrom(`lucid_ai_generations`).leftJoin(`lucid_users`,`lucid_users.id`,`lucid_ai_generations.user_id`).select(e=>[`lucid_ai_generations.id`,`lucid_ai_generations.request_id`,`lucid_ai_generations.provider_request_id`,`lucid_ai_generations.feature_key`,`lucid_ai_generations.feature_version`,`lucid_ai_generations.user_id`,`lucid_ai_generations.target_type`,`lucid_ai_generations.target`,`lucid_ai_generations.usage`,`lucid_ai_generations.model`,`lucid_ai_generations.cost_currency`,`lucid_ai_generations.cost_total_minor`,`lucid_ai_generations.duration_ms`,`lucid_ai_generations.status`,`lucid_ai_generations.error_message`,`lucid_ai_generations.created_at`,`lucid_users.email`,`lucid_users.username`,`lucid_users.first_name`,`lucid_users.last_name`,this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media`).select(e=>[`lucid_media.id`,`lucid_media.key`,`lucid_media.origin`,`lucid_media.type`,`lucid_media.mime_type`,`lucid_media.file_extension`,`lucid_media.file_name`,`lucid_media.file_size`,`lucid_media.width`,`lucid_media.height`,`lucid_media.focal_x`,`lucid_media.focal_y`,`lucid_media.blur_hash`,`lucid_media.average_color`,`lucid_media.base64`,`lucid_media.is_dark`,`lucid_media.is_light`,t(this.db,this.dbAdapter,`lucid_media.id`),this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media_translations`).select([`lucid_media_translations.title`,`lucid_media_translations.alt`,`lucid_media_translations.description`,`lucid_media_translations.summary`,`lucid_media_translations.locale_code`]).whereRef(`lucid_media_translations.media_id`,`=`,`lucid_media.id`)).as(`translations`)]).whereRef(`lucid_media.id`,`=`,`lucid_users.profile_picture_media_id`).where(`lucid_media.is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`))).as(`profile_picture`)]),a=this.db.selectFrom(`lucid_ai_generations`).leftJoin(`lucid_users`,`lucid_users.id`,`lucid_ai_generations.user_id`).select(i`count(*)`.as(`count`));r=e.tenantScope(r,{tenantKey:n.tenantKey,column:`lucid_ai_generations.tenant_key`}),a=e.tenantScope(a,{tenantKey:n.tenantKey,column:`lucid_ai_generations.tenant_key`});let{main:o,count:s}=e.main({main:r,count:a},{queryParams:n.queryParams,database:this.dbAdapter.config,meta:this.queryConfig}),[c,l]=await Promise.all([o.execute(),s?.executeTakeFirst()]);return[c,l]},{method:`selectUsageMultiple`});return a.response.error?a.response:this.validateResponse(a,{...n.validation,mode:`multiple-count`,schema:this.tableSchema.extend({email:r.string().nullable(),username:r.string().nullable(),first_name:r.string().nullable(),last_name:r.string().nullable(),profile_picture:r.array(r.unknown()).optional()}),select:[`id`,`request_id`,`provider_request_id`,`feature_key`,`feature_version`,`user_id`,`target_type`,`target`,`usage`,`model`,`cost_currency`,`cost_total_minor`,`duration_ms`,`status`,`error_message`,`created_at`,`email`,`username`,`first_name`,`last_name`,`profile_picture`]})}};export{a as default}; //# sourceMappingURL=ai-generations.mjs.map