@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 5.56 kB
JavaScript
import e from"../db/query-builder/index.mjs";import t from"./parents/static-repository.mjs";import n from"zod";import{sql as r}from"kysely";var i=class extends t{constructor(e,t){super(e,t,`lucid_roles`)}tableSchema=n.object({id:n.number(),key:n.string().nullable(),locked:n.union([n.literal(this.dbAdapter.config.defaults.boolean.true),n.literal(this.dbAdapter.config.defaults.boolean.false)]),tenant_key:n.string().nullable(),permissions:n.array(n.object({id:n.number(),role_id:n.number(),permission:n.string()})).optional(),translations:n.array(n.object({name:n.string().nullable(),description:n.string().nullable(),locale_code:n.string()})).optional(),updated_at:n.union([n.string(),n.date()]).nullable(),created_at:n.union([n.string(),n.date()]).nullable()});columnFormats={id:this.dbAdapter.getDataType(`primary`),key:this.dbAdapter.getDataType(`text`),locked:this.dbAdapter.getDataType(`boolean`),tenant_key:this.dbAdapter.getDataType(`text`),updated_at:this.dbAdapter.getDataType(`timestamp`),created_at:this.dbAdapter.getDataType(`timestamp`)};queryConfig={tableKeys:{filters:{name:`translation.name`,description:`translation.description`,roleIds:`lucid_roles.id`,locked:`lucid_roles.locked`,createdAt:`lucid_roles.created_at`,updatedAt:`lucid_roles.updated_at`},sorts:{name:`translation.name`,createdAt:`lucid_roles.created_at`}},operators:{name:`contains`,description:`contains`}};async selectMultipleIdsByIds(t){let n=this.db.selectFrom(`lucid_roles`).select(`id`).where(`id`,`in`,t.ids);n=e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_roles.tenant_key`});let r=await this.executeQuery(()=>n.execute(),{method:`selectMultipleIdsByIds`});return r.response.error?r.response:this.validateResponse(r,{...t.validation,mode:`multiple`,schema:this.tableSchema.pick({id:!0}),select:[`id`]})}async selectRoleIdByTranslationName(t){let r=this.db.selectFrom(`lucid_roles`).innerJoin(`lucid_role_translations`,`lucid_role_translations.role_id`,`lucid_roles.id`).select(`lucid_roles.id as role_id`).where(`lucid_role_translations.name`,`=`,t.name).where(`lucid_role_translations.locale_code`,`=`,t.localeCode);t.excludeRoleId!==void 0&&(r=r.where(`lucid_roles.id`,`!=`,t.excludeRoleId)),r=e.tenantScope(r,{tenantKey:t.tenantKey,column:`lucid_roles.tenant_key`});let i=await this.executeQuery(()=>r.executeTakeFirst(),{method:`selectRoleIdByTranslationName`});return i.response.error?i.response:this.validateResponse(i,{...t.validation,mode:`single`,schema:n.object({role_id:n.number()}),select:[`role_id`]})}async selectSingleById(t){let n=this.db.selectFrom(`lucid_roles`).select(e=>[`id`,`key`,`locked`,`tenant_key`,`created_at`,`updated_at`,this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_role_translations`).select([`lucid_role_translations.name`,`lucid_role_translations.description`,`lucid_role_translations.locale_code`]).whereRef(`lucid_role_translations.role_id`,`=`,`lucid_roles.id`)).as(`translations`),this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_role_permissions`).select([`lucid_role_permissions.id`,`lucid_role_permissions.permission`,`lucid_role_permissions.role_id`]).whereRef(`lucid_role_permissions.role_id`,`=`,`lucid_roles.id`)).as(`permissions`)]).where(`id`,`=`,t.id).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_roles.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`,`key`,`locked`,`tenant_key`,`created_at`,`updated_at`,`translations`,`permissions`]})}async selectMultipleFilteredFixed(t){let n=await this.executeQuery(async()=>{let n=this.db.selectFrom(`lucid_roles`).leftJoin(`lucid_role_translations as translation`,e=>e.onRef(`translation.role_id`,`=`,`lucid_roles.id`)).select([`lucid_roles.id`,`lucid_roles.key`,`lucid_roles.locked`,`lucid_roles.tenant_key`,`lucid_roles.created_at`,`lucid_roles.updated_at`]).select(e=>[this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_role_translations`).select([`lucid_role_translations.name`,`lucid_role_translations.description`,`lucid_role_translations.locale_code`]).whereRef(`lucid_role_translations.role_id`,`=`,`lucid_roles.id`)).as(`translations`)]).$if(t.queryParams.include?.includes(`permissions`)||!1,e=>e.select(e=>[this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_role_permissions`).select([`lucid_role_permissions.id`,`lucid_role_permissions.permission`,`lucid_role_permissions.role_id`]).whereRef(`lucid_role_permissions.role_id`,`=`,`lucid_roles.id`)).as(`permissions`)])).groupBy(`lucid_roles.id`).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_roles.tenant_key`})),i=this.db.selectFrom(`lucid_roles`).select(r`count(distinct lucid_roles.id)`.as(`count`)).leftJoin(`lucid_role_translations as translation`,e=>e.onRef(`translation.role_id`,`=`,`lucid_roles.id`)).$call(n=>e.tenantScope(n,{tenantKey:t.tenantKey,column:`lucid_roles.tenant_key`})),{main:a,count:o}=e.main({main:n,count:i},{queryParams:t.queryParams,database:this.dbAdapter.config,meta:{tableKeys:{filters:{...this.queryConfig.tableKeys.filters,name:`translation.name`},sorts:this.queryConfig.tableKeys.sorts},operators:this.queryConfig.operators}}),[s,c]=await Promise.all([a.execute(),o?.executeTakeFirst()]);return[s,c]},{method:`selectMultipleFilteredFixed`});return n.response.error?n.response:this.validateResponse(n,{...t.validation,mode:`multiple-count`,select:[`id`,`key`,`locked`,`tenant_key`,`created_at`,`updated_at`,`translations`,`permissions`]})}};export{i as default};
//# sourceMappingURL=roles.mjs.map