@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 12.9 kB
Source Map (JSON)
{"version":3,"file":"media-share-links.mjs","names":[],"sources":["../../../src/libs/repositories/media-share-links.ts"],"sourcesContent":["import { sql } from \"kysely\";\nimport z from \"zod\";\nimport type DatabaseAdapter from \"../db/adapter-base.js\";\nimport type { KyselyDB } from \"../db/types.js\";\nimport StaticRepository from \"./parents/static-repository.js\";\n\nexport default class MediaShareLinksRepository extends StaticRepository<\"lucid_media_share_links\"> {\n\tconstructor(db: KyselyDB, dbAdapter: DatabaseAdapter) {\n\t\tsuper(db, dbAdapter, \"lucid_media_share_links\");\n\t}\n\ttableSchema = z.object({\n\t\tid: z.number(),\n\t\tmedia_id: z.number(),\n\t\ttoken: z.string(),\n\t\tpassword: z.string().nullable(),\n\t\texpires_at: z.union([z.string(), z.date()]).nullable(),\n\t\tname: z.string().nullable(),\n\t\tdescription: z.string().nullable(),\n\t\tcreated_at: z.union([z.string(), z.date()]).nullable(),\n\t\tupdated_at: z.union([z.string(), z.date()]).nullable(),\n\t\tupdated_by: z.number().nullable(),\n\t\tcreated_by: z.number().nullable(),\n\n\t\tmedia_is_deleted: z.union([\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t]),\n\t\tmedia_key: z.string().nullable().optional(),\n\t\tmedia_source_type: z.enum([\"original\", \"crop\"]),\n\t\tmedia_origin: z.enum([\"human\", \"ai_generated\", \"ai_modified\"]).optional(),\n\t\tmedia_type: z.string().nullable().optional(),\n\t\tmedia_mime_type: z.string().nullable().optional(),\n\t\tmedia_file_extension: z.string().nullable().optional(),\n\t\tmedia_file_size: z.number().nullable().optional(),\n\t\tmedia_width: z.number().nullable().optional(),\n\t\tmedia_height: z.number().nullable().optional(),\n\t\tmedia_focal_x: z.number().nullable().optional(),\n\t\tmedia_focal_y: z.number().nullable().optional(),\n\t\tmedia_poster_key: z.string().nullable().optional(),\n\t\tmedia_poster_type: z.string().nullable().optional(),\n\t});\n\tcolumnFormats = {\n\t\tid: this.dbAdapter.getDataType(\"primary\"),\n\t\tmedia_id: this.dbAdapter.getDataType(\"integer\"),\n\t\ttoken: this.dbAdapter.getDataType(\"text\"),\n\t\tpassword: this.dbAdapter.getDataType(\"text\"),\n\t\texpires_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tname: this.dbAdapter.getDataType(\"text\"),\n\t\tdescription: this.dbAdapter.getDataType(\"text\"),\n\t\tcreated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tupdated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tupdated_by: this.dbAdapter.getDataType(\"integer\"),\n\t\tcreated_by: this.dbAdapter.getDataType(\"integer\"),\n\t};\n\tqueryConfig = {\n\t\ttableKeys: {\n\t\t\tfilters: {\n\t\t\t\tmediaId: \"media_id\",\n\t\t\t\tupdatedBy: \"updated_by\",\n\t\t\t\tcreatedBy: \"created_by\",\n\t\t\t\ttoken: \"token\",\n\t\t\t\tname: \"name\",\n\t\t\t\texpiresAt: \"expires_at\",\n\t\t\t\tcreatedAt: \"created_at\",\n\t\t\t\tupdatedAt: \"updated_at\",\n\t\t\t},\n\t\t\tsorts: {\n\t\t\t\tname: \"name\",\n\t\t\t\texpiresAt: \"expires_at\",\n\t\t\t\tcreatedAt: \"created_at\",\n\t\t\t\tupdatedAt: \"updated_at\",\n\t\t\t},\n\t\t},\n\t} as const;\n\n\t// ----------------------------------------\n\t// queries\n\tasync selectSingleWithMediaByToken(props: { token: string }) {\n\t\tconst exec = await this.executeQuery(\n\t\t\tasync () => {\n\t\t\t\tconst query = this.db\n\t\t\t\t\t.selectFrom(\"lucid_media_share_links\")\n\t\t\t\t\t.innerJoin(\n\t\t\t\t\t\t\"lucid_media\",\n\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\"lucid_media_share_links.media_id\",\n\t\t\t\t\t)\n\t\t\t\t\t.leftJoin(\"lucid_media as active_crop\", (join) =>\n\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t.onRef(\"active_crop.parent_media_id\", \"=\", \"lucid_media.id\")\n\t\t\t\t\t\t\t.on(\"active_crop.relation_type\", \"=\", \"crop\")\n\t\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t\t\"active_crop.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.leftJoin(\"lucid_media as poster\", (join) =>\n\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t.onRef(\"poster.parent_media_id\", \"=\", \"lucid_media.id\")\n\t\t\t\t\t\t\t.on(\"poster.relation_type\", \"=\", \"poster\")\n\t\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t\t\"poster.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.leftJoin(\"lucid_media as poster_crop\", (join) =>\n\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t.onRef(\"poster_crop.parent_media_id\", \"=\", \"poster.id\")\n\t\t\t\t\t\t\t.on(\"poster_crop.relation_type\", \"=\", \"crop\")\n\t\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t\t\"poster_crop.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.select([\n\t\t\t\t\t\t\"lucid_media_share_links.id\",\n\t\t\t\t\t\t\"lucid_media_share_links.media_id\",\n\t\t\t\t\t\t\"lucid_media_share_links.token\",\n\t\t\t\t\t\t\"lucid_media_share_links.password\",\n\t\t\t\t\t\t\"lucid_media_share_links.expires_at\",\n\t\t\t\t\t\t\"lucid_media_share_links.name\",\n\t\t\t\t\t\t\"lucid_media_share_links.description\",\n\t\t\t\t\t\t\"lucid_media_share_links.created_at\",\n\t\t\t\t\t\t\"lucid_media_share_links.updated_at\",\n\t\t\t\t\t\t\"lucid_media_share_links.updated_by\",\n\t\t\t\t\t\t\"lucid_media_share_links.created_by\",\n\t\t\t\t\t\t\"lucid_media.is_deleted as media_is_deleted\",\n\t\t\t\t\t\tsql<string>`COALESCE(active_crop.key, lucid_media.key)`.as(\n\t\t\t\t\t\t\t\"media_key\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsql<\n\t\t\t\t\t\t\t\"original\" | \"crop\"\n\t\t\t\t\t\t>`CASE WHEN active_crop.id IS NULL THEN 'original' ELSE 'crop' END`.as(\n\t\t\t\t\t\t\t\"media_source_type\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"lucid_media.origin as media_origin\",\n\t\t\t\t\t\t\"lucid_media.type as media_type\",\n\t\t\t\t\t\tsql<string>`COALESCE(active_crop.mime_type, lucid_media.mime_type)`.as(\n\t\t\t\t\t\t\t\"media_mime_type\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsql<string>`COALESCE(active_crop.file_extension, lucid_media.file_extension)`.as(\n\t\t\t\t\t\t\t\"media_file_extension\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsql<number>`COALESCE(active_crop.file_size, lucid_media.file_size)`.as(\n\t\t\t\t\t\t\t\"media_file_size\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsql<\n\t\t\t\t\t\t\tnumber | null\n\t\t\t\t\t\t>`COALESCE(active_crop.width, lucid_media.width)`.as(\"media_width\"),\n\t\t\t\t\t\tsql<\n\t\t\t\t\t\t\tnumber | null\n\t\t\t\t\t\t>`COALESCE(active_crop.height, lucid_media.height)`.as(\n\t\t\t\t\t\t\t\"media_height\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsql<\n\t\t\t\t\t\t\tnumber | null\n\t\t\t\t\t\t>`COALESCE(active_crop.focal_x, lucid_media.focal_x)`.as(\n\t\t\t\t\t\t\t\"media_focal_x\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsql<\n\t\t\t\t\t\t\tnumber | null\n\t\t\t\t\t\t>`COALESCE(active_crop.focal_y, lucid_media.focal_y)`.as(\n\t\t\t\t\t\t\t\"media_focal_y\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsql<string | null>`COALESCE(poster_crop.key, poster.key)`.as(\n\t\t\t\t\t\t\t\"media_poster_key\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"poster.type as media_poster_type\",\n\t\t\t\t\t])\n\t\t\t\t\t.where(\"lucid_media_share_links.token\", \"=\", props.token)\n\t\t\t\t\t.limit(1);\n\n\t\t\t\treturn query.executeTakeFirst();\n\t\t\t},\n\t\t\t{ method: \"selectSingleWithMediaByToken\" },\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: \"single\",\n\t\t\tselect: [\n\t\t\t\t\"id\",\n\t\t\t\t\"media_id\",\n\t\t\t\t\"token\",\n\t\t\t\t\"password\",\n\t\t\t\t\"expires_at\",\n\t\t\t\t\"name\",\n\t\t\t\t\"description\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\t\"updated_by\",\n\t\t\t\t\"created_by\",\n\t\t\t\t\"media_is_deleted\",\n\t\t\t\t\"media_key\",\n\t\t\t\t\"media_source_type\",\n\t\t\t\t\"media_origin\",\n\t\t\t\t\"media_type\",\n\t\t\t\t\"media_mime_type\",\n\t\t\t\t\"media_file_extension\",\n\t\t\t\t\"media_file_size\",\n\t\t\t\t\"media_width\",\n\t\t\t\t\"media_height\",\n\t\t\t\t\"media_focal_x\",\n\t\t\t\t\"media_focal_y\",\n\t\t\t\t\"media_poster_key\",\n\t\t\t\t\"media_poster_type\",\n\t\t\t],\n\t\t});\n\t}\n\n\tasync deleteMultipleByMediaTenant(props: { tenantKey: string }) {\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tthis.db\n\t\t\t\t\t.deleteFrom(\"lucid_media_share_links\")\n\t\t\t\t\t.where((eb) =>\n\t\t\t\t\t\teb.exists(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t\t\t\t.select(\"lucid_media.id\")\n\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\"lucid_media_share_links.media_id\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where((mediaEb) =>\n\t\t\t\t\t\t\t\t\tmediaEb.or([\n\t\t\t\t\t\t\t\t\t\tmediaEb(\"lucid_media.tenant_key\", \"=\", props.tenantKey),\n\t\t\t\t\t\t\t\t\t\tmediaEb(\"lucid_media.tenant_key\", \"is\", null),\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.execute(),\n\t\t\t{ method: \"deleteMultipleByMediaTenant\" },\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: undefined,\n\t\t};\n\t}\n}\n"],"mappings":"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"}