@rebasepro/server-postgresql 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +69 -89
  2. package/dist/common/src/collections/default-collections.d.ts +5 -8
  3. package/dist/common/src/data/query_builder.d.ts +6 -2
  4. package/dist/common/src/util/permissions.d.ts +14 -6
  5. package/dist/index.es.js +379 -611
  6. package/dist/index.es.js.map +1 -1
  7. package/dist/index.umd.js +375 -607
  8. package/dist/index.umd.js.map +1 -1
  9. package/dist/server-postgresql/src/PostgresBackendDriver.d.ts +2 -0
  10. package/dist/server-postgresql/src/auth/ensure-tables.d.ts +7 -4
  11. package/dist/server-postgresql/src/auth/services.d.ts +17 -42
  12. package/dist/server-postgresql/src/data-transformer.d.ts +0 -3
  13. package/dist/server-postgresql/src/databasePoolManager.d.ts +1 -1
  14. package/dist/server-postgresql/src/schema/auth-schema.d.ts +87 -340
  15. package/dist/server-postgresql/src/services/EntityFetchService.d.ts +2 -1
  16. package/dist/server-postgresql/src/services/EntityPersistService.d.ts +4 -0
  17. package/dist/server-postgresql/src/services/entityService.d.ts +4 -0
  18. package/dist/server-postgresql/src/types.d.ts +3 -0
  19. package/dist/server-postgresql/src/utils/drizzle-conditions.d.ts +5 -1
  20. package/dist/server-postgresql/src/websocket.d.ts +8 -3
  21. package/dist/types/src/controllers/auth.d.ts +2 -2
  22. package/dist/types/src/controllers/client.d.ts +25 -40
  23. package/dist/types/src/controllers/data.d.ts +21 -3
  24. package/dist/types/src/controllers/data_driver.d.ts +5 -0
  25. package/dist/types/src/controllers/email.d.ts +2 -0
  26. package/dist/types/src/types/auth_adapter.d.ts +3 -56
  27. package/dist/types/src/types/backend.d.ts +38 -3
  28. package/dist/types/src/types/backend_hooks.d.ts +2 -17
  29. package/dist/types/src/types/collections.d.ts +30 -6
  30. package/dist/types/src/types/entity_views.d.ts +19 -28
  31. package/dist/types/src/types/properties.d.ts +9 -15
  32. package/dist/types/src/types/user_management_delegate.d.ts +16 -53
  33. package/dist/types/src/users/index.d.ts +0 -1
  34. package/dist/types/src/users/user.d.ts +0 -1
  35. package/package.json +6 -6
  36. package/src/PostgresBackendDriver.ts +10 -0
  37. package/src/PostgresBootstrapper.ts +27 -22
  38. package/src/auth/ensure-tables.ts +82 -129
  39. package/src/auth/services.ts +99 -197
  40. package/src/cli.ts +50 -23
  41. package/src/data-transformer.ts +57 -95
  42. package/src/databasePoolManager.ts +2 -1
  43. package/src/schema/auth-schema.ts +13 -69
  44. package/src/schema/doctor.ts +44 -3
  45. package/src/schema/generate-drizzle-schema-logic.ts +33 -3
  46. package/src/schema/generate-drizzle-schema.ts +2 -6
  47. package/src/schema/introspect-db-logic.ts +7 -0
  48. package/src/services/EntityFetchService.ts +13 -1
  49. package/src/services/EntityPersistService.ts +38 -12
  50. package/src/services/entityService.ts +7 -0
  51. package/src/types.ts +4 -0
  52. package/src/utils/drizzle-conditions.ts +40 -5
  53. package/src/websocket.ts +38 -25
  54. package/test/auth-services.test.ts +7 -150
  55. package/test/doctor.test.ts +6 -2
  56. package/test/relation-pipeline-gaps.test.ts +315 -0
  57. package/dist/server-postgresql/src/schema/default-collections.d.ts +0 -2
  58. package/dist/types/src/users/roles.d.ts +0 -14
  59. package/drizzle.test.config.ts +0 -10
  60. package/src/schema/default-collections.ts +0 -69
@@ -51,6 +51,7 @@ export declare class PostgresBackendDriver implements DataDriver {
51
51
  listenEntity<M extends Record<string, unknown>>({ path, entityId, collection, onUpdate, onError }: ListenEntityProps<M>): () => void;
52
52
  saveEntity<M extends Record<string, unknown>>({ path, entityId, values, collection, status }: SaveEntityProps<M>): Promise<Entity<M>>;
53
53
  deleteEntity<M extends Record<string, unknown>>({ entity, collection }: DeleteEntityProps<M>): Promise<void>;
54
+ deleteAll(path: string): Promise<void>;
54
55
  checkUniqueField(path: string, name: string, value: unknown, entityId?: string, collection?: EntityCollection): Promise<boolean>;
55
56
  countEntities<M extends Record<string, unknown>>({ path, collection, filter, searchString }: FetchCollectionProps<M>): Promise<number>;
56
57
  private getTargetDb;
@@ -103,6 +104,7 @@ export declare class AuthenticatedPostgresBackendDriver implements DataDriver {
103
104
  listenEntity<M extends Record<string, unknown>>(props: ListenEntityProps<M>): () => void;
104
105
  saveEntity<M extends Record<string, unknown>>(props: SaveEntityProps<M>): Promise<Entity<M>>;
105
106
  deleteEntity<M extends Record<string, unknown>>(props: DeleteEntityProps<M>): Promise<void>;
107
+ deleteAll(path: string): Promise<void>;
106
108
  checkUniqueField(path: string, name: string, value: unknown, entityId?: string, collection?: EntityCollection): Promise<boolean>;
107
109
  countEntities<M extends Record<string, unknown>>(props: FetchCollectionProps<M>): Promise<number>;
108
110
  }
@@ -1,7 +1,10 @@
1
1
  import { NodePgDatabase } from "drizzle-orm/node-postgres";
2
- import { PostgresCollectionRegistry } from "../collections/PostgresCollectionRegistry";
2
+ import type { EntityCollection } from "@rebasepro/types";
3
3
  /**
4
- * Auto-create auth tables if they don't exist
5
- * This runs on startup to ensure the database is ready for auth
4
+ * Auto-create auth tables if they don't exist.
5
+ *
6
+ * @param db — Drizzle database instance
7
+ * @param collection — The collection that represents auth users.
8
+ * When omitted, a default `rebase.users` table is created.
6
9
  */
7
- export declare function ensureAuthTablesExist(db: NodePgDatabase, registry?: PostgresCollectionRegistry): Promise<void>;
10
+ export declare function ensureAuthTablesExist(db: NodePgDatabase, collection?: EntityCollection): Promise<void>;
@@ -1,15 +1,13 @@
1
1
  import { NodePgDatabase } from "drizzle-orm/node-postgres";
2
- import { PgTable, AnyPgColumn } from "drizzle-orm/pg-core";
3
- import { UserRepository, RoleRepository, TokenRepository, MfaRepository, AuthRepository, UserData, CreateUserData, RoleData, CreateRoleData, RefreshTokenInfo, PasswordResetTokenInfo, UserIdentityData, ListUsersOptions, PaginatedUsersResult, MfaFactor, MfaChallengeInfo, RoleData as Role } from "@rebasepro/server-core";
2
+ import type { RebasePgTable } from "../types";
3
+ import { UserRepository, TokenRepository, MfaRepository, AuthRepository, UserData, CreateUserData, RoleData, CreateRoleData, RefreshTokenInfo, PasswordResetTokenInfo, UserIdentityData, ListUsersOptions, PaginatedUsersResult, MfaFactor, MfaChallengeInfo, RoleData as Role } from "@rebasepro/server-core";
4
4
  export type { Role };
5
5
  export interface AuthSchemaTables {
6
- users: PgTable & Record<string, AnyPgColumn>;
7
- roles: PgTable & Record<string, AnyPgColumn>;
8
- userRoles: PgTable & Record<string, AnyPgColumn>;
9
- refreshTokens: PgTable & Record<string, AnyPgColumn>;
10
- passwordResetTokens: PgTable & Record<string, AnyPgColumn>;
11
- appConfig: PgTable & Record<string, AnyPgColumn>;
12
- userIdentities: PgTable & Record<string, AnyPgColumn>;
6
+ users: RebasePgTable;
7
+ refreshTokens: RebasePgTable;
8
+ passwordResetTokens: RebasePgTable;
9
+ appConfig: RebasePgTable;
10
+ userIdentities: RebasePgTable;
13
11
  }
14
12
  /**
15
13
  * PostgreSQL implementation of UserRepository.
@@ -19,9 +17,7 @@ export declare class UserService implements UserRepository {
19
17
  private db;
20
18
  private usersTable;
21
19
  private userIdentitiesTable;
22
- private userRolesTable;
23
- private rolesTable;
24
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
20
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
25
21
  private getQualifiedUsersTableName;
26
22
  private mapRowToUser;
27
23
  private mapPayload;
@@ -52,7 +48,7 @@ export declare class UserService implements UserRepository {
52
48
  */
53
49
  getUserByVerificationToken(token: string): Promise<UserData | null>;
54
50
  /**
55
- * Get roles for a user from database
51
+ * Get roles for a user from database (inline TEXT[] column)
56
52
  */
57
53
  getUserRoles(userId: string): Promise<Role[]>;
58
54
  /**
@@ -60,11 +56,11 @@ export declare class UserService implements UserRepository {
60
56
  */
61
57
  getUserRoleIds(userId: string): Promise<string[]>;
62
58
  /**
63
- * Set roles for a user
59
+ * Set roles for a user (replaces existing roles)
64
60
  */
65
61
  setUserRoles(userId: string, roleIds: string[]): Promise<void>;
66
62
  /**
67
- * Assign a specific role to new user
63
+ * Assign a specific role to new user (appends if not present)
68
64
  */
69
65
  assignDefaultRole(userId: string, roleId: string): Promise<void>;
70
66
  /**
@@ -75,28 +71,10 @@ export declare class UserService implements UserRepository {
75
71
  roles: Role[];
76
72
  } | null>;
77
73
  }
78
- /**
79
- * PostgreSQL implementation of RoleRepository.
80
- * Handles all role-related database operations using Drizzle ORM.
81
- */
82
- export declare class RoleService implements RoleRepository {
83
- private db;
84
- private rolesTable;
85
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
86
- private getQualifiedRolesTableName;
87
- getRoleById(id: string): Promise<Role | null>;
88
- listRoles(): Promise<Role[]>;
89
- createRole(data: Omit<Role, "isAdmin" | "collectionPermissions"> & {
90
- isAdmin?: boolean;
91
- collectionPermissions?: Role["collectionPermissions"];
92
- }): Promise<Role>;
93
- updateRole(id: string, data: Partial<Omit<Role, "id">>): Promise<Role | null>;
94
- deleteRole(id: string): Promise<void>;
95
- }
96
74
  export declare class RefreshTokenService {
97
75
  private db;
98
76
  private refreshTokensTable;
99
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
77
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
100
78
  private getQualifiedRefreshTokensTableName;
101
79
  createToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
102
80
  findByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
@@ -111,7 +89,7 @@ export declare class RefreshTokenService {
111
89
  export declare class PasswordResetTokenService {
112
90
  private db;
113
91
  private passwordResetTokensTable;
114
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
92
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
115
93
  private getQualifiedPasswordResetTokensTableName;
116
94
  /**
117
95
  * Create a password reset token
@@ -145,7 +123,7 @@ export declare class PostgresTokenRepository implements TokenRepository {
145
123
  private db;
146
124
  private refreshTokenService;
147
125
  private passwordResetTokenService;
148
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
126
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
149
127
  createRefreshToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
150
128
  findRefreshTokenByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
151
129
  deleteRefreshToken(tokenHash: string): Promise<void>;
@@ -166,9 +144,8 @@ export declare class PostgresTokenRepository implements TokenRepository {
166
144
  export declare class PostgresAuthRepository implements AuthRepository {
167
145
  private db;
168
146
  private userService;
169
- private roleService;
170
147
  private tokenRepository;
171
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
148
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
172
149
  createUser(data: CreateUserData): Promise<UserData>;
173
150
  getUserById(id: string): Promise<UserData | null>;
174
151
  getUserByEmail(email: string): Promise<UserData | null>;
@@ -193,9 +170,9 @@ export declare class PostgresAuthRepository implements AuthRepository {
193
170
  } | null>;
194
171
  getRoleById(id: string): Promise<RoleData | null>;
195
172
  listRoles(): Promise<RoleData[]>;
196
- createRole(data: CreateRoleData): Promise<RoleData>;
173
+ createRole(_data: CreateRoleData): Promise<RoleData>;
197
174
  updateRole(id: string, data: Partial<Omit<RoleData, "id">>): Promise<RoleData | null>;
198
- deleteRole(id: string): Promise<void>;
175
+ deleteRole(_id: string): Promise<void>;
199
176
  createRefreshToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
200
177
  findRefreshTokenByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
201
178
  deleteRefreshToken(tokenHash: string): Promise<void>;
@@ -252,5 +229,3 @@ export declare class MfaService implements MfaRepository {
252
229
  }
253
230
  /** PostgreSQL user repository implementation */
254
231
  export type PostgresUserRepository = UserService;
255
- /** PostgreSQL role repository implementation */
256
- export type PostgresRoleRepository = RoleService;
@@ -42,9 +42,6 @@ export declare function serializePropertyToServer(value: unknown, property: Prop
42
42
  * Transform IDs back to relation objects for frontend
43
43
  */
44
44
  export declare function parseDataFromServer<M extends Record<string, unknown>>(data: M, collection: EntityCollection, db?: NodePgDatabase<Record<string, unknown>>, registry?: PostgresCollectionRegistry): Promise<M>;
45
- /**
46
- * Parse a single property value from database format to frontend format
47
- */
48
45
  export declare function parsePropertyFromServer(value: unknown, property: Property, collection: EntityCollection, propertyKey?: string): unknown;
49
46
  /**
50
47
  * Lightweight value normalization for db.query results.
@@ -6,7 +6,7 @@ export declare class DatabasePoolManager {
6
6
  readonly defaultDatabaseName: string;
7
7
  private readonly rootConnectionString;
8
8
  constructor(adminConnectionString: string);
9
- getDrizzle(databaseName: string): NodePgDatabase<any>;
9
+ getDrizzle(databaseName: string): NodePgDatabase<Record<string, never>>;
10
10
  getPool(databaseName: string): Pool;
11
11
  /**
12
12
  * Disconnect and remove the pool for a specific database.
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * Factory function to dynamically create the auth tables bound to the specified schema names.
3
3
  */
4
- export declare function createAuthSchema(rolesSchemaName?: string, usersSchemaName?: string): {
5
- rolesSchema: import("drizzle-orm/pg-core").PgSchema<string> | null;
4
+ export declare function createAuthSchema(usersSchemaName?: string): {
6
5
  usersSchema: import("drizzle-orm/pg-core").PgSchema<string> | null;
7
6
  users: import("drizzle-orm/pg-core").PgTableWithColumns<{
8
7
  name: "users";
@@ -171,6 +170,49 @@ export declare function createAuthSchema(rolesSchemaName?: string, usersSchemaNa
171
170
  identity: undefined;
172
171
  generated: undefined;
173
172
  }, {}, {}>;
173
+ roles: import("drizzle-orm/pg-core").PgColumn<{
174
+ name: "roles";
175
+ tableName: "users";
176
+ dataType: "array";
177
+ columnType: "PgArray";
178
+ data: string[];
179
+ driverParam: string | string[];
180
+ notNull: true;
181
+ hasDefault: true;
182
+ isPrimaryKey: false;
183
+ isAutoincrement: false;
184
+ hasRuntimeDefault: false;
185
+ enumValues: [string, ...string[]];
186
+ baseColumn: import("drizzle-orm").Column<{
187
+ name: "roles";
188
+ tableName: "users";
189
+ dataType: "string";
190
+ columnType: "PgText";
191
+ data: string;
192
+ driverParam: string;
193
+ notNull: false;
194
+ hasDefault: false;
195
+ isPrimaryKey: false;
196
+ isAutoincrement: false;
197
+ hasRuntimeDefault: false;
198
+ enumValues: [string, ...string[]];
199
+ baseColumn: never;
200
+ identity: undefined;
201
+ generated: undefined;
202
+ }, {}, {}>;
203
+ identity: undefined;
204
+ generated: undefined;
205
+ }, {}, {
206
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
207
+ name: "roles";
208
+ dataType: "string";
209
+ columnType: "PgText";
210
+ data: string;
211
+ enumValues: [string, ...string[]];
212
+ driverParam: string;
213
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
214
+ size: undefined;
215
+ }>;
174
216
  metadata: import("drizzle-orm/pg-core").PgColumn<{
175
217
  name: "metadata";
176
218
  tableName: "users";
@@ -227,169 +269,6 @@ export declare function createAuthSchema(rolesSchemaName?: string, usersSchemaNa
227
269
  };
228
270
  dialect: "pg";
229
271
  }>;
230
- roles: import("drizzle-orm/pg-core").PgTableWithColumns<{
231
- name: "roles";
232
- schema: undefined;
233
- columns: {
234
- id: import("drizzle-orm/pg-core").PgColumn<{
235
- name: "id";
236
- tableName: "roles";
237
- dataType: "string";
238
- columnType: "PgVarchar";
239
- data: string;
240
- driverParam: string;
241
- notNull: true;
242
- hasDefault: false;
243
- isPrimaryKey: true;
244
- isAutoincrement: false;
245
- hasRuntimeDefault: false;
246
- enumValues: [string, ...string[]];
247
- baseColumn: never;
248
- identity: undefined;
249
- generated: undefined;
250
- }, {}, {
251
- length: 50;
252
- }>;
253
- name: import("drizzle-orm/pg-core").PgColumn<{
254
- name: "name";
255
- tableName: "roles";
256
- dataType: "string";
257
- columnType: "PgVarchar";
258
- data: string;
259
- driverParam: string;
260
- notNull: true;
261
- hasDefault: false;
262
- isPrimaryKey: false;
263
- isAutoincrement: false;
264
- hasRuntimeDefault: false;
265
- enumValues: [string, ...string[]];
266
- baseColumn: never;
267
- identity: undefined;
268
- generated: undefined;
269
- }, {}, {
270
- length: 100;
271
- }>;
272
- isAdmin: import("drizzle-orm/pg-core").PgColumn<{
273
- name: "is_admin";
274
- tableName: "roles";
275
- dataType: "boolean";
276
- columnType: "PgBoolean";
277
- data: boolean;
278
- driverParam: boolean;
279
- notNull: true;
280
- hasDefault: true;
281
- isPrimaryKey: false;
282
- isAutoincrement: false;
283
- hasRuntimeDefault: false;
284
- enumValues: undefined;
285
- baseColumn: never;
286
- identity: undefined;
287
- generated: undefined;
288
- }, {}, {}>;
289
- defaultPermissions: import("drizzle-orm/pg-core").PgColumn<{
290
- name: "default_permissions";
291
- tableName: "roles";
292
- dataType: "json";
293
- columnType: "PgJsonb";
294
- data: {
295
- read?: boolean;
296
- create?: boolean;
297
- edit?: boolean;
298
- delete?: boolean;
299
- };
300
- driverParam: unknown;
301
- notNull: false;
302
- hasDefault: false;
303
- isPrimaryKey: false;
304
- isAutoincrement: false;
305
- hasRuntimeDefault: false;
306
- enumValues: undefined;
307
- baseColumn: never;
308
- identity: undefined;
309
- generated: undefined;
310
- }, {}, {
311
- $type: {
312
- read?: boolean;
313
- create?: boolean;
314
- edit?: boolean;
315
- delete?: boolean;
316
- };
317
- }>;
318
- collectionPermissions: import("drizzle-orm/pg-core").PgColumn<{
319
- name: "collection_permissions";
320
- tableName: "roles";
321
- dataType: "json";
322
- columnType: "PgJsonb";
323
- data: Record<string, {
324
- read?: boolean;
325
- create?: boolean;
326
- edit?: boolean;
327
- delete?: boolean;
328
- }>;
329
- driverParam: unknown;
330
- notNull: false;
331
- hasDefault: false;
332
- isPrimaryKey: false;
333
- isAutoincrement: false;
334
- hasRuntimeDefault: false;
335
- enumValues: undefined;
336
- baseColumn: never;
337
- identity: undefined;
338
- generated: undefined;
339
- }, {}, {
340
- $type: Record<string, {
341
- read?: boolean;
342
- create?: boolean;
343
- edit?: boolean;
344
- delete?: boolean;
345
- }>;
346
- }>;
347
- };
348
- dialect: "pg";
349
- }>;
350
- userRoles: import("drizzle-orm/pg-core").PgTableWithColumns<{
351
- name: "user_roles";
352
- schema: undefined;
353
- columns: {
354
- userId: import("drizzle-orm/pg-core").PgColumn<{
355
- name: "user_id";
356
- tableName: "user_roles";
357
- dataType: "string";
358
- columnType: "PgUUID";
359
- data: string;
360
- driverParam: string;
361
- notNull: true;
362
- hasDefault: false;
363
- isPrimaryKey: false;
364
- isAutoincrement: false;
365
- hasRuntimeDefault: false;
366
- enumValues: undefined;
367
- baseColumn: never;
368
- identity: undefined;
369
- generated: undefined;
370
- }, {}, {}>;
371
- roleId: import("drizzle-orm/pg-core").PgColumn<{
372
- name: "role_id";
373
- tableName: "user_roles";
374
- dataType: "string";
375
- columnType: "PgVarchar";
376
- data: string;
377
- driverParam: string;
378
- notNull: true;
379
- hasDefault: false;
380
- isPrimaryKey: false;
381
- isAutoincrement: false;
382
- hasRuntimeDefault: false;
383
- enumValues: [string, ...string[]];
384
- baseColumn: never;
385
- identity: undefined;
386
- generated: undefined;
387
- }, {}, {
388
- length: 50;
389
- }>;
390
- };
391
- dialect: "pg";
392
- }>;
393
272
  refreshTokens: import("drizzle-orm/pg-core").PgTableWithColumns<{
394
273
  name: "refresh_tokens";
395
274
  schema: undefined;
@@ -1178,7 +1057,6 @@ export declare function createAuthSchema(rolesSchemaName?: string, usersSchemaNa
1178
1057
  dialect: "pg";
1179
1058
  }>;
1180
1059
  };
1181
- export declare const rebaseSchema: import("drizzle-orm/pg-core").PgSchema<string> | null;
1182
1060
  export declare const usersSchema: import("drizzle-orm/pg-core").PgSchema<string> | null;
1183
1061
  export declare const users: import("drizzle-orm/pg-core").PgTableWithColumns<{
1184
1062
  name: "users";
@@ -1347,6 +1225,49 @@ export declare const users: import("drizzle-orm/pg-core").PgTableWithColumns<{
1347
1225
  identity: undefined;
1348
1226
  generated: undefined;
1349
1227
  }, {}, {}>;
1228
+ roles: import("drizzle-orm/pg-core").PgColumn<{
1229
+ name: "roles";
1230
+ tableName: "users";
1231
+ dataType: "array";
1232
+ columnType: "PgArray";
1233
+ data: string[];
1234
+ driverParam: string | string[];
1235
+ notNull: true;
1236
+ hasDefault: true;
1237
+ isPrimaryKey: false;
1238
+ isAutoincrement: false;
1239
+ hasRuntimeDefault: false;
1240
+ enumValues: [string, ...string[]];
1241
+ baseColumn: import("drizzle-orm").Column<{
1242
+ name: "roles";
1243
+ tableName: "users";
1244
+ dataType: "string";
1245
+ columnType: "PgText";
1246
+ data: string;
1247
+ driverParam: string;
1248
+ notNull: false;
1249
+ hasDefault: false;
1250
+ isPrimaryKey: false;
1251
+ isAutoincrement: false;
1252
+ hasRuntimeDefault: false;
1253
+ enumValues: [string, ...string[]];
1254
+ baseColumn: never;
1255
+ identity: undefined;
1256
+ generated: undefined;
1257
+ }, {}, {}>;
1258
+ identity: undefined;
1259
+ generated: undefined;
1260
+ }, {}, {
1261
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
1262
+ name: "roles";
1263
+ dataType: "string";
1264
+ columnType: "PgText";
1265
+ data: string;
1266
+ enumValues: [string, ...string[]];
1267
+ driverParam: string;
1268
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
1269
+ size: undefined;
1270
+ }>;
1350
1271
  metadata: import("drizzle-orm/pg-core").PgColumn<{
1351
1272
  name: "metadata";
1352
1273
  tableName: "users";
@@ -1403,169 +1324,6 @@ export declare const users: import("drizzle-orm/pg-core").PgTableWithColumns<{
1403
1324
  };
1404
1325
  dialect: "pg";
1405
1326
  }>;
1406
- export declare const roles: import("drizzle-orm/pg-core").PgTableWithColumns<{
1407
- name: "roles";
1408
- schema: undefined;
1409
- columns: {
1410
- id: import("drizzle-orm/pg-core").PgColumn<{
1411
- name: "id";
1412
- tableName: "roles";
1413
- dataType: "string";
1414
- columnType: "PgVarchar";
1415
- data: string;
1416
- driverParam: string;
1417
- notNull: true;
1418
- hasDefault: false;
1419
- isPrimaryKey: true;
1420
- isAutoincrement: false;
1421
- hasRuntimeDefault: false;
1422
- enumValues: [string, ...string[]];
1423
- baseColumn: never;
1424
- identity: undefined;
1425
- generated: undefined;
1426
- }, {}, {
1427
- length: 50;
1428
- }>;
1429
- name: import("drizzle-orm/pg-core").PgColumn<{
1430
- name: "name";
1431
- tableName: "roles";
1432
- dataType: "string";
1433
- columnType: "PgVarchar";
1434
- data: string;
1435
- driverParam: string;
1436
- notNull: true;
1437
- hasDefault: false;
1438
- isPrimaryKey: false;
1439
- isAutoincrement: false;
1440
- hasRuntimeDefault: false;
1441
- enumValues: [string, ...string[]];
1442
- baseColumn: never;
1443
- identity: undefined;
1444
- generated: undefined;
1445
- }, {}, {
1446
- length: 100;
1447
- }>;
1448
- isAdmin: import("drizzle-orm/pg-core").PgColumn<{
1449
- name: "is_admin";
1450
- tableName: "roles";
1451
- dataType: "boolean";
1452
- columnType: "PgBoolean";
1453
- data: boolean;
1454
- driverParam: boolean;
1455
- notNull: true;
1456
- hasDefault: true;
1457
- isPrimaryKey: false;
1458
- isAutoincrement: false;
1459
- hasRuntimeDefault: false;
1460
- enumValues: undefined;
1461
- baseColumn: never;
1462
- identity: undefined;
1463
- generated: undefined;
1464
- }, {}, {}>;
1465
- defaultPermissions: import("drizzle-orm/pg-core").PgColumn<{
1466
- name: "default_permissions";
1467
- tableName: "roles";
1468
- dataType: "json";
1469
- columnType: "PgJsonb";
1470
- data: {
1471
- read?: boolean;
1472
- create?: boolean;
1473
- edit?: boolean;
1474
- delete?: boolean;
1475
- };
1476
- driverParam: unknown;
1477
- notNull: false;
1478
- hasDefault: false;
1479
- isPrimaryKey: false;
1480
- isAutoincrement: false;
1481
- hasRuntimeDefault: false;
1482
- enumValues: undefined;
1483
- baseColumn: never;
1484
- identity: undefined;
1485
- generated: undefined;
1486
- }, {}, {
1487
- $type: {
1488
- read?: boolean;
1489
- create?: boolean;
1490
- edit?: boolean;
1491
- delete?: boolean;
1492
- };
1493
- }>;
1494
- collectionPermissions: import("drizzle-orm/pg-core").PgColumn<{
1495
- name: "collection_permissions";
1496
- tableName: "roles";
1497
- dataType: "json";
1498
- columnType: "PgJsonb";
1499
- data: Record<string, {
1500
- read?: boolean;
1501
- create?: boolean;
1502
- edit?: boolean;
1503
- delete?: boolean;
1504
- }>;
1505
- driverParam: unknown;
1506
- notNull: false;
1507
- hasDefault: false;
1508
- isPrimaryKey: false;
1509
- isAutoincrement: false;
1510
- hasRuntimeDefault: false;
1511
- enumValues: undefined;
1512
- baseColumn: never;
1513
- identity: undefined;
1514
- generated: undefined;
1515
- }, {}, {
1516
- $type: Record<string, {
1517
- read?: boolean;
1518
- create?: boolean;
1519
- edit?: boolean;
1520
- delete?: boolean;
1521
- }>;
1522
- }>;
1523
- };
1524
- dialect: "pg";
1525
- }>;
1526
- export declare const userRoles: import("drizzle-orm/pg-core").PgTableWithColumns<{
1527
- name: "user_roles";
1528
- schema: undefined;
1529
- columns: {
1530
- userId: import("drizzle-orm/pg-core").PgColumn<{
1531
- name: "user_id";
1532
- tableName: "user_roles";
1533
- dataType: "string";
1534
- columnType: "PgUUID";
1535
- data: string;
1536
- driverParam: string;
1537
- notNull: true;
1538
- hasDefault: false;
1539
- isPrimaryKey: false;
1540
- isAutoincrement: false;
1541
- hasRuntimeDefault: false;
1542
- enumValues: undefined;
1543
- baseColumn: never;
1544
- identity: undefined;
1545
- generated: undefined;
1546
- }, {}, {}>;
1547
- roleId: import("drizzle-orm/pg-core").PgColumn<{
1548
- name: "role_id";
1549
- tableName: "user_roles";
1550
- dataType: "string";
1551
- columnType: "PgVarchar";
1552
- data: string;
1553
- driverParam: string;
1554
- notNull: true;
1555
- hasDefault: false;
1556
- isPrimaryKey: false;
1557
- isAutoincrement: false;
1558
- hasRuntimeDefault: false;
1559
- enumValues: [string, ...string[]];
1560
- baseColumn: never;
1561
- identity: undefined;
1562
- generated: undefined;
1563
- }, {}, {
1564
- length: 50;
1565
- }>;
1566
- };
1567
- dialect: "pg";
1568
- }>;
1569
1327
  export declare const refreshTokens: import("drizzle-orm/pg-core").PgTableWithColumns<{
1570
1328
  name: "refresh_tokens";
1571
1329
  schema: undefined;
@@ -2354,20 +2112,12 @@ export declare const recoveryCodes: import("drizzle-orm/pg-core").PgTableWithCol
2354
2112
  dialect: "pg";
2355
2113
  }>;
2356
2114
  export declare const usersRelations: import("drizzle-orm").Relations<"users", {
2357
- userRoles: import("drizzle-orm").Many<"user_roles">;
2358
2115
  refreshTokens: import("drizzle-orm").Many<"refresh_tokens">;
2359
2116
  passwordResetTokens: import("drizzle-orm").Many<"password_reset_tokens">;
2360
2117
  userIdentities: import("drizzle-orm").Many<"user_identities">;
2361
2118
  mfaFactors: import("drizzle-orm").Many<"mfa_factors">;
2362
2119
  recoveryCodes: import("drizzle-orm").Many<"recovery_codes">;
2363
2120
  }>;
2364
- export declare const rolesRelations: import("drizzle-orm").Relations<"roles", {
2365
- userRoles: import("drizzle-orm").Many<"user_roles">;
2366
- }>;
2367
- export declare const userRolesRelations: import("drizzle-orm").Relations<"user_roles", {
2368
- user: import("drizzle-orm").One<"users", true>;
2369
- role: import("drizzle-orm").One<"roles", true>;
2370
- }>;
2371
2121
  export declare const refreshTokensRelations: import("drizzle-orm").Relations<"refresh_tokens", {
2372
2122
  user: import("drizzle-orm").One<"users", true>;
2373
2123
  }>;
@@ -2389,9 +2139,6 @@ export declare const recoveryCodesRelations: import("drizzle-orm").Relations<"re
2389
2139
  }>;
2390
2140
  export type User = typeof users.$inferSelect;
2391
2141
  export type NewUser = typeof users.$inferInsert;
2392
- export type Role = typeof roles.$inferSelect;
2393
- export type NewRole = typeof roles.$inferInsert;
2394
- export type UserRole = typeof userRoles.$inferSelect;
2395
2142
  export type RefreshToken = typeof refreshTokens.$inferSelect;
2396
2143
  export type PasswordResetToken = typeof passwordResetTokens.$inferSelect;
2397
2144
  export type AppConfig = typeof appConfig.$inferSelect;