{"version":3,"file":"roles.mjs","names":["queryBuilder"],"sources":["../../../src/libs/repositories/roles.ts"],"sourcesContent":["import { sql } from \"kysely\";\nimport z from \"zod\";\nimport type { GetMultipleQueryParams } from \"../../schemas/roles.js\";\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\";\nimport type { QueryProps } from \"./types.js\";\n\nexport default class RolesRepository extends StaticRepository<\"lucid_roles\"> {\n\tconstructor(db: KyselyDB, dbAdapter: DatabaseAdapter) {\n\t\tsuper(db, dbAdapter, \"lucid_roles\");\n\t}\n\ttableSchema = z.object({\n\t\tid: z.number(),\n\t\tkey: z.string().nullable(),\n\t\tlocked: 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\ttenant_key: z.string().nullable(),\n\t\tpermissions: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tid: z.number(),\n\t\t\t\t\trole_id: z.number(),\n\t\t\t\t\tpermission: z.string(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t\ttranslations: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tname: z.string().nullable(),\n\t\t\t\t\tdescription: z.string().nullable(),\n\t\t\t\t\tlocale_code: z.string(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t\tupdated_at: z.union([z.string(), z.date()]).nullable(),\n\t\tcreated_at: z.union([z.string(), z.date()]).nullable(),\n\t});\n\tcolumnFormats = {\n\t\tid: this.dbAdapter.getDataType(\"primary\"),\n\t\tkey: this.dbAdapter.getDataType(\"text\"),\n\t\tlocked: this.dbAdapter.getDataType(\"boolean\"),\n\t\ttenant_key: this.dbAdapter.getDataType(\"text\"),\n\t\tupdated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tcreated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t};\n\tqueryConfig = {\n\t\ttableKeys: {\n\t\t\tfilters: {\n\t\t\t\tname: \"translation.name\",\n\t\t\t\tdescription: \"translation.description\",\n\t\t\t\troleIds: \"lucid_roles.id\",\n\t\t\t\tlocked: \"lucid_roles.locked\",\n\t\t\t\tcreatedAt: \"lucid_roles.created_at\",\n\t\t\t\tupdatedAt: \"lucid_roles.updated_at\",\n\t\t\t},\n\t\t\tsorts: {\n\t\t\t\tname: \"translation.name\",\n\t\t\t\tcreatedAt: \"lucid_roles.created_at\",\n\t\t\t},\n\t\t},\n\t\toperators: {\n\t\t\tname: \"contains\",\n\t\t\tdescription: \"contains\",\n\t\t},\n\t} as const;\n\n\t// ----------------------------------------\n\t// queries\n\tasync selectMultipleIdsByIds<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tids: number[];\n\t\t\t\ttenantKey?: string | null;\n\t\t\t}\n\t\t>,\n\t) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"lucid_roles\")\n\t\t\t.select(\"id\")\n\t\t\t.where(\"id\", \"in\", props.ids);\n\n\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\ttenantKey: props.tenantKey,\n\t\t\tcolumn: \"lucid_roles.tenant_key\",\n\t\t});\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"selectMultipleIdsByIds\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple\",\n\t\t\tschema: this.tableSchema.pick({\n\t\t\t\tid: true,\n\t\t\t}),\n\t\t\tselect: [\"id\"],\n\t\t});\n\t}\n\n\tasync selectRoleIdByTranslationName<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tname: string;\n\t\t\t\tlocaleCode: string;\n\t\t\t\ttenantKey?: string | null;\n\t\t\t\texcludeRoleId?: number;\n\t\t\t}\n\t\t>,\n\t) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"lucid_roles\")\n\t\t\t.innerJoin(\n\t\t\t\t\"lucid_role_translations\",\n\t\t\t\t\"lucid_role_translations.role_id\",\n\t\t\t\t\"lucid_roles.id\",\n\t\t\t)\n\t\t\t.select(\"lucid_roles.id as role_id\")\n\t\t\t.where(\"lucid_role_translations.name\", \"=\", props.name)\n\t\t\t.where(\"lucid_role_translations.locale_code\", \"=\", props.localeCode);\n\n\t\tif (props.excludeRoleId !== undefined) {\n\t\t\tquery = query.where(\"lucid_roles.id\", \"!=\", props.excludeRoleId);\n\t\t}\n\n\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\ttenantKey: props.tenantKey,\n\t\t\tcolumn: \"lucid_roles.tenant_key\",\n\t\t});\n\n\t\tconst exec = await this.executeQuery(() => query.executeTakeFirst(), {\n\t\t\tmethod: \"selectRoleIdByTranslationName\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"single\",\n\t\t\tschema: z.object({\n\t\t\t\trole_id: z.number(),\n\t\t\t}),\n\t\t\tselect: [\"role_id\"],\n\t\t});\n\t}\n\n\tasync selectSingleById<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tid: number;\n\t\t\t\ttenantKey?: string | null;\n\t\t\t}\n\t\t>,\n\t) {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_roles\")\n\t\t\t.select((eb) => [\n\t\t\t\t\"id\",\n\t\t\t\t\"key\",\n\t\t\t\t\"locked\",\n\t\t\t\t\"tenant_key\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_role_translations\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"lucid_role_translations.name\",\n\t\t\t\t\t\t\t\t\"lucid_role_translations.description\",\n\t\t\t\t\t\t\t\t\"lucid_role_translations.locale_code\",\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\"lucid_role_translations.role_id\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\"lucid_roles.id\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"translations\"),\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_role_permissions\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"lucid_role_permissions.id\",\n\t\t\t\t\t\t\t\t\"lucid_role_permissions.permission\",\n\t\t\t\t\t\t\t\t\"lucid_role_permissions.role_id\",\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\"lucid_role_permissions.role_id\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\"lucid_roles.id\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"permissions\"),\n\t\t\t])\n\t\t\t.where(\"id\", \"=\", props.id)\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_roles.tenant_key\",\n\t\t\t\t}),\n\t\t\t);\n\n\t\tconst exec = await this.executeQuery(() => query.executeTakeFirst(), {\n\t\t\tmethod: \"selectSingleById\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"single\",\n\t\t\tselect: [\n\t\t\t\t\"id\",\n\t\t\t\t\"key\",\n\t\t\t\t\"locked\",\n\t\t\t\t\"tenant_key\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\t\"translations\",\n\t\t\t\t\"permissions\",\n\t\t\t],\n\t\t});\n\t}\n\tasync selectMultipleFilteredFixed<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tqueryParams: GetMultipleQueryParams;\n\t\t\t\ttenantKey?: string | null;\n\t\t\t}\n\t\t>,\n\t) {\n\t\tconst exec = await this.executeQuery(\n\t\t\tasync () => {\n\t\t\t\tconst mainQuery = this.db\n\t\t\t\t\t.selectFrom(\"lucid_roles\")\n\t\t\t\t\t.leftJoin(\"lucid_role_translations as translation\", (join) =>\n\t\t\t\t\t\tjoin.onRef(\"translation.role_id\", \"=\", \"lucid_roles.id\"),\n\t\t\t\t\t)\n\t\t\t\t\t.select([\n\t\t\t\t\t\t\"lucid_roles.id\",\n\t\t\t\t\t\t\"lucid_roles.key\",\n\t\t\t\t\t\t\"lucid_roles.locked\",\n\t\t\t\t\t\t\"lucid_roles.tenant_key\",\n\t\t\t\t\t\t\"lucid_roles.created_at\",\n\t\t\t\t\t\t\"lucid_roles.updated_at\",\n\t\t\t\t\t])\n\t\t\t\t\t.select((eb) => [\n\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_role_translations\")\n\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\"lucid_role_translations.name\",\n\t\t\t\t\t\t\t\t\t\t\"lucid_role_translations.description\",\n\t\t\t\t\t\t\t\t\t\t\"lucid_role_translations.locale_code\",\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\"lucid_role_translations.role_id\",\n\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\"lucid_roles.id\",\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.as(\"translations\"),\n\t\t\t\t\t])\n\t\t\t\t\t.$if(\n\t\t\t\t\t\tprops.queryParams.include?.includes(\"permissions\") || false,\n\t\t\t\t\t\t(qb) =>\n\t\t\t\t\t\t\tqb.select((eb) => [\n\t\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_role_permissions\")\n\t\t\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_role_permissions.id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_role_permissions.permission\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_role_permissions.role_id\",\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_role_permissions.role_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_roles.id\",\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.as(\"permissions\"),\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t)\n\t\t\t\t\t.groupBy(\"lucid_roles.id\")\n\t\t\t\t\t.$call((qb) =>\n\t\t\t\t\t\tqueryBuilder.tenantScope(qb, {\n\t\t\t\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\t\t\t\tcolumn: \"lucid_roles.tenant_key\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\tconst countQuery = this.db\n\t\t\t\t\t.selectFrom(\"lucid_roles\")\n\t\t\t\t\t.select(sql`count(distinct lucid_roles.id)`.as(\"count\"))\n\t\t\t\t\t.leftJoin(\"lucid_role_translations as translation\", (join) =>\n\t\t\t\t\t\tjoin.onRef(\"translation.role_id\", \"=\", \"lucid_roles.id\"),\n\t\t\t\t\t)\n\t\t\t\t\t.$call((qb) =>\n\t\t\t\t\t\tqueryBuilder.tenantScope(qb, {\n\t\t\t\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\t\t\t\tcolumn: \"lucid_roles.tenant_key\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\tconst { main, count } = queryBuilder.main(\n\t\t\t\t\t{\n\t\t\t\t\t\tmain: mainQuery,\n\t\t\t\t\t\tcount: countQuery,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tqueryParams: props.queryParams,\n\t\t\t\t\t\tdatabase: this.dbAdapter.config,\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\ttableKeys: {\n\t\t\t\t\t\t\t\tfilters: {\n\t\t\t\t\t\t\t\t\t...this.queryConfig.tableKeys.filters,\n\t\t\t\t\t\t\t\t\tname: \"translation.name\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsorts: this.queryConfig.tableKeys.sorts,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toperators: this.queryConfig.operators,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tconst [mainResult, countResult] = await Promise.all([\n\t\t\t\t\tmain.execute(),\n\t\t\t\t\tcount?.executeTakeFirst() as Promise<{ count: string } | undefined>,\n\t\t\t\t]);\n\n\t\t\t\treturn [mainResult, countResult] as const;\n\t\t\t},\n\t\t\t{\n\t\t\t\tmethod: \"selectMultipleFilteredFixed\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple-count\",\n\t\t\tselect: [\n\t\t\t\t\"id\",\n\t\t\t\t\"key\",\n\t\t\t\t\"locked\",\n\t\t\t\t\"tenant_key\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\t\"translations\",\n\t\t\t\t\"permissions\",\n\t\t\t],\n\t\t});\n\t}\n}\n"],"mappings":"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"}