{"version":3,"file":"user-roles.mjs","names":["queryBuilder"],"sources":["../../../src/libs/repositories/user-roles.ts"],"sourcesContent":["import 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\";\nimport type { QueryProps } from \"./types.js\";\n\nexport default class UserRolesRepository extends StaticRepository<\"lucid_user_roles\"> {\n\tconstructor(db: KyselyDB, dbAdapter: DatabaseAdapter) {\n\t\tsuper(db, dbAdapter, \"lucid_user_roles\");\n\t}\n\ttableSchema = z.object({\n\t\tid: z.number(),\n\t\tuser_id: z.number(),\n\t\trole_id: z.number(),\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\tuser_id: this.dbAdapter.getDataType(\"integer\"),\n\t\trole_id: this.dbAdapter.getDataType(\"integer\"),\n\t\tupdated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tcreated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t};\n\tqueryConfig = undefined;\n\n\t/**\n\t * Deletes role assignments for a user inside the selected tenant role scope.\n\t * A global request keeps the previous behaviour and clears every assignment.\n\t */\n\tasync deleteMultipleByUserTenantScope<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tuserId: 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.deleteFrom(\"lucid_user_roles\")\n\t\t\t.where(\"user_id\", \"=\", props.userId)\n\t\t\t.returning([\"id\"]);\n\n\t\tif (props.tenantKey != null) {\n\t\t\tconst roleIdsQuery = this.db\n\t\t\t\t.selectFrom(\"lucid_roles\")\n\t\t\t\t.select(\"id\")\n\t\t\t\t.$call((qb) =>\n\t\t\t\t\tqueryBuilder.tenantScope(qb, {\n\t\t\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\t\t\tcolumn: \"lucid_roles.tenant_key\",\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\tquery = query.where(\"role_id\", \"in\", roleIdsQuery);\n\t\t}\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"deleteMultipleByUserTenantScope\",\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\tselect: [\"id\"],\n\t\t});\n\t}\n}\n"],"mappings":"+GAOA,IAAqB,EAArB,cAAiD,CAAqC,CACrF,YAAY,EAAc,EAA4B,CACrD,MAAM,EAAI,EAAW,kBAAkB,CACxC,CACA,YAAc,EAAE,OAAO,CACtB,GAAI,EAAE,OAAO,EACb,QAAS,EAAE,OAAO,EAClB,QAAS,EAAE,OAAO,EAClB,WAAY,EAAE,MAAM,CAAC,EAAE,OAAO,EAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EACrD,WAAY,EAAE,MAAM,CAAC,EAAE,OAAO,EAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CACtD,CAAC,EACD,cAAgB,CACf,GAAI,KAAK,UAAU,YAAY,SAAS,EACxC,QAAS,KAAK,UAAU,YAAY,SAAS,EAC7C,QAAS,KAAK,UAAU,YAAY,SAAS,EAC7C,WAAY,KAAK,UAAU,YAAY,WAAW,EAClD,WAAY,KAAK,UAAU,YAAY,WAAW,CACnD,EACA,YAAc,IAAA,GAMd,MAAM,gCACL,EAOC,CACD,IAAI,EAAQ,KAAK,GACf,WAAW,kBAAkB,CAAC,CAC9B,MAAM,UAAW,IAAK,EAAM,MAAM,CAAC,CACnC,UAAU,CAAC,IAAI,CAAC,EAElB,GAAI,EAAM,WAAa,KAAM,CAC5B,IAAM,EAAe,KAAK,GACxB,WAAW,aAAa,CAAC,CACzB,OAAO,IAAI,CAAC,CACZ,MAAO,GACPA,EAAa,YAAY,EAAI,CAC5B,UAAW,EAAM,UACjB,OAAQ,wBACT,CAAC,CACF,EAED,EAAQ,EAAM,MAAM,UAAW,KAAM,CAAY,CAClD,CAEA,IAAM,EAAO,MAAM,KAAK,iBAAmB,EAAM,QAAQ,EAAG,CAC3D,OAAQ,iCACT,CAAC,EAGD,OAFI,EAAK,SAAS,MAAc,EAAK,SAE9B,KAAK,iBAAiB,EAAM,CAClC,GAAG,EAAM,WACT,KAAM,WACN,OAAQ,CAAC,IAAI,CACd,CAAC,CACF,CACD"}