UNPKG

@lucidcms/core

Version:

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

1 lines 7.69 kB
{"version":3,"file":"processed-images.mjs","names":["queryBuilder"],"sources":["../../../src/libs/repositories/processed-images.ts"],"sourcesContent":["import { sql } from \"kysely\";\nimport z from \"zod\";\nimport type DatabaseAdapter from \"../db/adapter-base.js\";\nimport queryBuilder from \"../db/query-builder/index.js\";\nimport type { KyselyDB } from \"../db/types.js\";\nimport StaticRepository from \"./parents/static-repository.js\";\n\nexport default class ProcessedImagesRepository extends StaticRepository<\"lucid_processed_images\"> {\n\tconstructor(db: KyselyDB, dbAdapter: DatabaseAdapter) {\n\t\tsuper(db, dbAdapter, \"lucid_processed_images\");\n\t}\n\ttableSchema = z.object({\n\t\tkey: z.string(),\n\t\tmedia_key: z.string(),\n\t\tfile_size: z.number(),\n\t});\n\tcolumnFormats = {\n\t\tkey: this.dbAdapter.getDataType(\"text\"),\n\t\tmedia_key: this.dbAdapter.getDataType(\"text\"),\n\t\tfile_size: this.dbAdapter.getDataType(\"integer\"),\n\t};\n\tqueryConfig = undefined;\n\n\t// ----------------------------------------\n\t// queries\n\tasync sumFileSize() {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_processed_images\")\n\t\t\t.select(sql<string | number>`COALESCE(SUM(file_size), 0)`.as(\"total\"));\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.executeTakeFirst() as Promise<\n\t\t\t\t\t{ total: string | number | null } | undefined\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"sumFileSize\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: Number(exec.response.data?.total ?? 0),\n\t\t};\n\t}\n\n\tasync sumFileSizeByMediaTenant(props: { tenantKey: string | null }) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"lucid_processed_images\")\n\t\t\t.leftJoin(\n\t\t\t\t\"lucid_media\",\n\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\"lucid_processed_images.media_key\",\n\t\t\t)\n\t\t\t.select(\n\t\t\t\tsql<\n\t\t\t\t\tstring | number\n\t\t\t\t>`COALESCE(SUM(lucid_processed_images.file_size), 0)`.as(\"total\"),\n\t\t\t);\n\n\t\tquery =\n\t\t\tprops.tenantKey === null\n\t\t\t\t? query.where(\"lucid_media.tenant_key\", \"is\", null)\n\t\t\t\t: query.where(\"lucid_media.tenant_key\", \"=\", props.tenantKey);\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.executeTakeFirst() as Promise<\n\t\t\t\t\t{ total: string | number | null } | undefined\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"sumFileSizeByMediaTenant\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: Number(exec.response.data?.total ?? 0),\n\t\t};\n\t}\n\n\tasync sumFileSizeGroupedByMediaTenant() {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_processed_images\")\n\t\t\t.leftJoin(\n\t\t\t\t\"lucid_media\",\n\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\"lucid_processed_images.media_key\",\n\t\t\t)\n\t\t\t.select([\n\t\t\t\t\"lucid_media.tenant_key as tenant_key\",\n\t\t\t\tsql<\n\t\t\t\t\tstring | number\n\t\t\t\t>`COALESCE(SUM(lucid_processed_images.file_size), 0)`.as(\"total\"),\n\t\t\t])\n\t\t\t.groupBy(\"lucid_media.tenant_key\");\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.execute() as Promise<\n\t\t\t\t\t{ tenant_key: string | null; total: string | number | null }[]\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"sumFileSizeGroupedByMediaTenant\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: exec.response.data.map((row) => ({\n\t\t\t\ttenant_key: row.tenant_key,\n\t\t\t\ttotal: Number(row.total ?? 0),\n\t\t\t})),\n\t\t};\n\t}\n\n\tasync selectMultipleByMediaTenant(props: { tenantKey: string }) {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_processed_images\")\n\t\t\t.innerJoin(\n\t\t\t\t\"lucid_media\",\n\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\"lucid_processed_images.media_key\",\n\t\t\t)\n\t\t\t.select([\n\t\t\t\t\"lucid_processed_images.key\",\n\t\t\t\t\"lucid_processed_images.file_size\",\n\t\t\t])\n\t\t\t.$call((qb) =>\n\t\t\t\tqueryBuilder.tenantScope(qb, {\n\t\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\t\tcolumn: \"lucid_media.tenant_key\",\n\t\t\t\t}),\n\t\t\t);\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"selectMultipleByMediaTenant\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\tenabled: true,\n\t\t\tmode: \"multiple\",\n\t\t\tselect: [\"key\", \"file_size\"],\n\t\t});\n\t}\n\n\tasync selectMultipleWithMediaTenant(props?: { tenantKey?: string | null }) {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_processed_images\")\n\t\t\t.leftJoin(\n\t\t\t\t\"lucid_media\",\n\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\"lucid_processed_images.media_key\",\n\t\t\t)\n\t\t\t.select([\n\t\t\t\t\"lucid_processed_images.key\",\n\t\t\t\t\"lucid_processed_images.media_key\",\n\t\t\t\t\"lucid_processed_images.file_size\",\n\t\t\t\t\"lucid_media.tenant_key as tenant_key\",\n\t\t\t])\n\t\t\t.$call((qb) =>\n\t\t\t\tprops?.tenantKey\n\t\t\t\t\t? queryBuilder.tenantScope(qb, {\n\t\t\t\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\t\t\t\tcolumn: \"lucid_media.tenant_key\",\n\t\t\t\t\t\t})\n\t\t\t\t\t: qb,\n\t\t\t);\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"selectMultipleWithMediaTenant\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: exec.response.data,\n\t\t};\n\t}\n}\n"],"mappings":"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"}