@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 6.53 kB
JavaScript
import e from"../db/query-builder/index.mjs";import t from"./parents/static-repository.mjs";import n from"zod";var r=class extends t{constructor(e,t){super(e,t,`lucid_media_folders`)}tableSchema=n.object({id:n.number(),title:n.string(),tenant_key:n.string().nullable(),parent_folder_id:n.number().nullable(),folder_count:n.number().nullable().optional(),media_count:n.number().nullable().optional(),created_by:n.number().nullable(),updated_by:n.number().nullable(),created_at:n.union([n.string(),n.date()]).nullable(),updated_at:n.union([n.string(),n.date()]).nullable()});columnFormats={id:this.dbAdapter.getDataType(`primary`),title:this.dbAdapter.getDataType(`text`),tenant_key:this.dbAdapter.getDataType(`text`),parent_folder_id:this.dbAdapter.getDataType(`integer`),created_by:this.dbAdapter.getDataType(`integer`),updated_by:this.dbAdapter.getDataType(`integer`),created_at:this.dbAdapter.getDataType(`timestamp`),updated_at:this.dbAdapter.getDataType(`timestamp`)};queryConfig={tableKeys:{filters:{title:`title`,parentFolderId:`parent_folder_id`,createdBy:`created_by`},sorts:{title:`title`,createdAt:`created_at`,updatedAt:`updated_at`}}};async selectSingleById(t){let n=this.db.selectFrom(`lucid_media_folders`).select([`id`,`tenant_key`]).where(`id`,`=`,t.id).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_media_folders.tenant_key`})),r=await this.executeQuery(()=>n.executeTakeFirst(),{method:`selectSingleById`});return r.response.error?r.response:this.validateResponse(r,{...t.validation,mode:`single`,select:[`id`,`tenant_key`]})}async selectMultipleForHierarchy(t){let n=this.db.selectFrom(`lucid_media_folders`).select([`id`,`title`,`parent_folder_id`,`created_by`,`updated_by`,`created_at`,`updated_at`]).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_media_folders.tenant_key`})),r=await this.executeQuery(()=>n.execute(),{method:`selectMultipleForHierarchy`});return r.response.error?r.response:this.validateResponse(r,{...t.validation,mode:`multiple`,select:[`id`,`title`,`parent_folder_id`,`created_by`,`updated_by`,`created_at`,`updated_at`]})}async selectMultipleWithCounts(t){let n=await this.executeQuery(async()=>{let n=this.db.selectFrom(`lucid_media_folders`).select(n=>[`lucid_media_folders.id`,`lucid_media_folders.title`,`lucid_media_folders.parent_folder_id`,`lucid_media_folders.created_by`,`lucid_media_folders.updated_by`,`lucid_media_folders.created_at`,`lucid_media_folders.updated_at`,n.selectFrom(`lucid_media_folders as children`).select(({fn:e})=>e.count(`children.id`).as(`folder_count`)).whereRef(`children.parent_folder_id`,`=`,`lucid_media_folders.id`).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`children.tenant_key`})).as(`folder_count`),n.selectFrom(`lucid_media`).select(({fn:e})=>e.count(`lucid_media.id`).as(`media_count`)).whereRef(`lucid_media.folder_id`,`=`,`lucid_media_folders.id`).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_media.tenant_key`})).where(`lucid_media.is_hidden`,`=`,this.dbAdapter.getDefault(`boolean`,`false`)).as(`media_count`)]).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_media_folders.tenant_key`})),r=this.db.selectFrom(`lucid_media_folders`).select(({fn:e})=>e.count(`lucid_media_folders.id`).as(`count`)).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_media_folders.tenant_key`})),{main:i,count:a}=e.main({main:n,count:r},{queryParams:t.queryParams,database:this.dbAdapter.config,meta:this.queryConfig}),[o,s]=await Promise.all([i.execute(),a?.executeTakeFirst()]);return[o,s]},{method:`selectMultipleWithCounts`});return n.response.error?n.response:this.validateResponse(n,{...t.validation,mode:`multiple-count`,select:[`id`,`title`,`parent_folder_id`,`created_by`,`updated_by`,`created_at`,`updated_at`,`folder_count`,`media_count`]})}async getDescendantIds(t){let n=t.tenantKey??null,r=t.scope??`read`,i=this.db.withRecursive(`desc_folders`,i=>i.selectFrom(`lucid_media_folders`).select([`id`,`parent_folder_id`]).where(`id`,`in`,t.folderIds).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`tenant_key`})).$if(r===`owner`&&n!==null,e=>e.where(`tenant_key`,`=`,n)).unionAll(i.selectFrom(`lucid_media_folders`).innerJoin(`desc_folders`,`desc_folders.id`,`lucid_media_folders.parent_folder_id`).select([`lucid_media_folders.id`,`lucid_media_folders.parent_folder_id`]).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_media_folders.tenant_key`})).$if(r===`owner`&&n!==null,e=>e.where(`lucid_media_folders.tenant_key`,`=`,n)))).selectFrom(`desc_folders`).select([`id`]).groupBy([`id`]),a=await this.executeQuery(()=>i.execute(),{method:`getDescendantIds`});return a.response.error?a.response:this.validateResponse(a,{enabled:!0,mode:`multiple`,select:[`id`]})}async checkCircularParents(t){let n=this.db.withRecursive(`ancestors`,n=>n.selectFrom(`lucid_media_folders`).select([`id as current_id`,`parent_folder_id as parent_id`]).where(`id`,`=`,t.parentFolderId).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`tenant_key`})).unionAll(n.selectFrom(`lucid_media_folders`).innerJoin(`ancestors`,`ancestors.parent_id`,`lucid_media_folders.id`).select([`lucid_media_folders.id as current_id`,`lucid_media_folders.parent_folder_id as parent_id`]).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_media_folders.tenant_key`})))).selectFrom(`ancestors`).select(`parent_id`).where(`parent_id`,`=`,t.folderId),r=await this.executeQuery(()=>n.executeTakeFirst(),{method:`checkCircularParents`});return r.response.error?r.response:this.validateResponse(r,{enabled:!1,mode:`single`,select:[`parent_id`]})}async getBreadcrumb(t){let n=this.db.withRecursive(`breadcrumb`,n=>n.selectFrom(`lucid_media_folders`).select([`id`,`title`,`parent_folder_id`]).where(`id`,`=`,t.folderId).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`tenant_key`})).unionAll(n.selectFrom(`lucid_media_folders`).innerJoin(`breadcrumb`,`breadcrumb.parent_folder_id`,`lucid_media_folders.id`).select([`lucid_media_folders.id`,`lucid_media_folders.title`,`lucid_media_folders.parent_folder_id`]).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_media_folders.tenant_key`})))).selectFrom(`breadcrumb`).select([`id`,`title`,`parent_folder_id`]).orderBy(`parent_folder_id`,`asc`),r=await this.executeQuery(()=>n.execute(),{method:`getBreadcrumb`});return r.response.error?r.response:this.validateResponse(r,{enabled:!0,mode:`multiple`,select:[`id`,`title`,`parent_folder_id`]})}};export{r as default};
//# sourceMappingURL=media-folders.mjs.map