@rebasepro/server-postgresql 0.4.0 → 0.6.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 (168) hide show
  1. package/README.md +69 -89
  2. package/dist/{server-postgresql/src/PostgresAdapter.d.ts → PostgresAdapter.d.ts} +1 -1
  3. package/dist/{server-postgresql/src/PostgresBackendDriver.d.ts → PostgresBackendDriver.d.ts} +2 -2
  4. package/dist/{server-postgresql/src/PostgresBootstrapper.d.ts → PostgresBootstrapper.d.ts} +11 -1
  5. package/dist/{server-postgresql/src/auth → auth}/services.d.ts +11 -11
  6. package/dist/{server-postgresql/src/collections → collections}/PostgresCollectionRegistry.d.ts +4 -0
  7. package/dist/{server-postgresql/src/data-transformer.d.ts → data-transformer.d.ts} +0 -3
  8. package/dist/{server-postgresql/src/databasePoolManager.d.ts → databasePoolManager.d.ts} +1 -1
  9. package/dist/index.es.js +10174 -11184
  10. package/dist/index.es.js.map +1 -1
  11. package/dist/index.umd.js +10735 -11462
  12. package/dist/index.umd.js.map +1 -1
  13. package/dist/{server-postgresql/src/services → services}/EntityPersistService.d.ts +0 -14
  14. package/dist/types.d.ts +3 -0
  15. package/dist/utils/pg-error-utils.d.ts +55 -0
  16. package/dist/{server-postgresql/src/websocket.d.ts → websocket.d.ts} +8 -3
  17. package/package.json +24 -21
  18. package/src/PostgresAdapter.ts +9 -10
  19. package/src/PostgresBackendDriver.ts +135 -122
  20. package/src/PostgresBootstrapper.ts +90 -16
  21. package/src/auth/ensure-tables.ts +28 -5
  22. package/src/auth/services.ts +56 -45
  23. package/src/cli.ts +140 -110
  24. package/src/collections/PostgresCollectionRegistry.ts +7 -0
  25. package/src/connection.ts +11 -6
  26. package/src/data-transformer.ts +73 -109
  27. package/src/databasePoolManager.ts +5 -3
  28. package/src/history/HistoryService.ts +3 -2
  29. package/src/history/ensure-history-table.ts +5 -4
  30. package/src/schema/auth-schema.ts +1 -2
  31. package/src/schema/doctor-cli.ts +2 -1
  32. package/src/schema/doctor.ts +40 -37
  33. package/src/schema/generate-drizzle-schema-logic.ts +56 -18
  34. package/src/schema/generate-drizzle-schema.ts +11 -11
  35. package/src/schema/introspect-db-inference.ts +25 -25
  36. package/src/schema/introspect-db-logic.ts +38 -38
  37. package/src/schema/introspect-db.ts +28 -27
  38. package/src/services/BranchService.ts +14 -0
  39. package/src/services/EntityFetchService.ts +28 -25
  40. package/src/services/EntityPersistService.ts +11 -124
  41. package/src/services/RelationService.ts +57 -37
  42. package/src/services/entity-helpers.ts +6 -2
  43. package/src/services/realtimeService.ts +45 -32
  44. package/src/types.ts +4 -0
  45. package/src/utils/drizzle-conditions.ts +31 -15
  46. package/src/utils/pg-error-utils.ts +211 -0
  47. package/src/websocket.ts +51 -33
  48. package/test/auth-services.test.ts +36 -19
  49. package/test/batch-many-to-many-regression.test.ts +119 -39
  50. package/test/data-transformer-hardening.test.ts +67 -33
  51. package/test/data-transformer.test.ts +4 -2
  52. package/test/doctor.test.ts +10 -5
  53. package/test/drizzle-conditions.test.ts +59 -6
  54. package/test/generate-drizzle-schema.test.ts +65 -40
  55. package/test/introspect-db-generation.test.ts +179 -81
  56. package/test/introspect-db-utils.test.ts +92 -37
  57. package/test/mocks/chalk.cjs +7 -0
  58. package/test/pg-error-utils.test.ts +221 -0
  59. package/test/postgresDataDriver.test.ts +14 -5
  60. package/test/property-ordering.test.ts +126 -79
  61. package/test/realtimeService.test.ts +6 -2
  62. package/test/relation-pipeline-gaps.test.ts +84 -36
  63. package/test/relations.test.ts +247 -0
  64. package/test/unmapped-tables-safety.test.ts +14 -6
  65. package/test/websocket.test.ts +1 -1
  66. package/tsconfig.json +5 -0
  67. package/tsconfig.prod.json +3 -0
  68. package/vite.config.ts +5 -5
  69. package/dist/common/src/collections/CollectionRegistry.d.ts +0 -56
  70. package/dist/common/src/collections/default-collections.d.ts +0 -9
  71. package/dist/common/src/collections/index.d.ts +0 -2
  72. package/dist/common/src/data/buildRebaseData.d.ts +0 -14
  73. package/dist/common/src/data/query_builder.d.ts +0 -55
  74. package/dist/common/src/index.d.ts +0 -4
  75. package/dist/common/src/util/builders.d.ts +0 -57
  76. package/dist/common/src/util/callbacks.d.ts +0 -6
  77. package/dist/common/src/util/collections.d.ts +0 -11
  78. package/dist/common/src/util/common.d.ts +0 -2
  79. package/dist/common/src/util/conditions.d.ts +0 -26
  80. package/dist/common/src/util/entities.d.ts +0 -58
  81. package/dist/common/src/util/enums.d.ts +0 -3
  82. package/dist/common/src/util/index.d.ts +0 -16
  83. package/dist/common/src/util/navigation_from_path.d.ts +0 -34
  84. package/dist/common/src/util/navigation_utils.d.ts +0 -20
  85. package/dist/common/src/util/parent_references_from_path.d.ts +0 -6
  86. package/dist/common/src/util/paths.d.ts +0 -14
  87. package/dist/common/src/util/permissions.d.ts +0 -6
  88. package/dist/common/src/util/references.d.ts +0 -2
  89. package/dist/common/src/util/relations.d.ts +0 -22
  90. package/dist/common/src/util/resolutions.d.ts +0 -72
  91. package/dist/common/src/util/storage.d.ts +0 -24
  92. package/dist/types/src/controllers/analytics_controller.d.ts +0 -7
  93. package/dist/types/src/controllers/auth.d.ts +0 -104
  94. package/dist/types/src/controllers/client.d.ts +0 -168
  95. package/dist/types/src/controllers/collection_registry.d.ts +0 -46
  96. package/dist/types/src/controllers/customization_controller.d.ts +0 -60
  97. package/dist/types/src/controllers/data.d.ts +0 -207
  98. package/dist/types/src/controllers/data_driver.d.ts +0 -218
  99. package/dist/types/src/controllers/database_admin.d.ts +0 -11
  100. package/dist/types/src/controllers/dialogs_controller.d.ts +0 -36
  101. package/dist/types/src/controllers/effective_role.d.ts +0 -4
  102. package/dist/types/src/controllers/email.d.ts +0 -36
  103. package/dist/types/src/controllers/index.d.ts +0 -18
  104. package/dist/types/src/controllers/local_config_persistence.d.ts +0 -20
  105. package/dist/types/src/controllers/navigation.d.ts +0 -225
  106. package/dist/types/src/controllers/registry.d.ts +0 -63
  107. package/dist/types/src/controllers/side_dialogs_controller.d.ts +0 -67
  108. package/dist/types/src/controllers/side_entity_controller.d.ts +0 -97
  109. package/dist/types/src/controllers/snackbar.d.ts +0 -24
  110. package/dist/types/src/controllers/storage.d.ts +0 -171
  111. package/dist/types/src/index.d.ts +0 -4
  112. package/dist/types/src/rebase_context.d.ts +0 -122
  113. package/dist/types/src/types/auth_adapter.d.ts +0 -301
  114. package/dist/types/src/types/backend.d.ts +0 -536
  115. package/dist/types/src/types/backend_hooks.d.ts +0 -172
  116. package/dist/types/src/types/builders.d.ts +0 -15
  117. package/dist/types/src/types/chips.d.ts +0 -5
  118. package/dist/types/src/types/collections.d.ts +0 -941
  119. package/dist/types/src/types/component_ref.d.ts +0 -47
  120. package/dist/types/src/types/cron.d.ts +0 -102
  121. package/dist/types/src/types/data_source.d.ts +0 -64
  122. package/dist/types/src/types/database_adapter.d.ts +0 -94
  123. package/dist/types/src/types/entities.d.ts +0 -145
  124. package/dist/types/src/types/entity_actions.d.ts +0 -104
  125. package/dist/types/src/types/entity_callbacks.d.ts +0 -173
  126. package/dist/types/src/types/entity_link_builder.d.ts +0 -7
  127. package/dist/types/src/types/entity_overrides.d.ts +0 -10
  128. package/dist/types/src/types/entity_views.d.ts +0 -87
  129. package/dist/types/src/types/export_import.d.ts +0 -21
  130. package/dist/types/src/types/formex.d.ts +0 -40
  131. package/dist/types/src/types/index.d.ts +0 -28
  132. package/dist/types/src/types/locales.d.ts +0 -4
  133. package/dist/types/src/types/modify_collections.d.ts +0 -5
  134. package/dist/types/src/types/plugins.d.ts +0 -282
  135. package/dist/types/src/types/properties.d.ts +0 -1181
  136. package/dist/types/src/types/property_config.d.ts +0 -74
  137. package/dist/types/src/types/relations.d.ts +0 -336
  138. package/dist/types/src/types/slots.d.ts +0 -262
  139. package/dist/types/src/types/translations.d.ts +0 -900
  140. package/dist/types/src/types/user_management_delegate.d.ts +0 -86
  141. package/dist/types/src/types/websockets.d.ts +0 -78
  142. package/dist/types/src/users/index.d.ts +0 -1
  143. package/dist/types/src/users/user.d.ts +0 -50
  144. package/drizzle.test.config.ts +0 -10
  145. /package/dist/{server-postgresql/src/auth → auth}/ensure-tables.d.ts +0 -0
  146. /package/dist/{server-postgresql/src/cli.d.ts → cli.d.ts} +0 -0
  147. /package/dist/{server-postgresql/src/connection.d.ts → connection.d.ts} +0 -0
  148. /package/dist/{server-postgresql/src/history → history}/HistoryService.d.ts +0 -0
  149. /package/dist/{server-postgresql/src/history → history}/ensure-history-table.d.ts +0 -0
  150. /package/dist/{server-postgresql/src/index.d.ts → index.d.ts} +0 -0
  151. /package/dist/{server-postgresql/src/interfaces.d.ts → interfaces.d.ts} +0 -0
  152. /package/dist/{server-postgresql/src/schema → schema}/auth-schema.d.ts +0 -0
  153. /package/dist/{server-postgresql/src/schema → schema}/doctor-cli.d.ts +0 -0
  154. /package/dist/{server-postgresql/src/schema → schema}/doctor.d.ts +0 -0
  155. /package/dist/{server-postgresql/src/schema → schema}/generate-drizzle-schema-logic.d.ts +0 -0
  156. /package/dist/{server-postgresql/src/schema → schema}/generate-drizzle-schema.d.ts +0 -0
  157. /package/dist/{server-postgresql/src/schema → schema}/introspect-db-inference.d.ts +0 -0
  158. /package/dist/{server-postgresql/src/schema → schema}/introspect-db-logic.d.ts +0 -0
  159. /package/dist/{server-postgresql/src/schema → schema}/introspect-db.d.ts +0 -0
  160. /package/dist/{server-postgresql/src/schema → schema}/test-schema.d.ts +0 -0
  161. /package/dist/{server-postgresql/src/services → services}/BranchService.d.ts +0 -0
  162. /package/dist/{server-postgresql/src/services → services}/EntityFetchService.d.ts +0 -0
  163. /package/dist/{server-postgresql/src/services → services}/RelationService.d.ts +0 -0
  164. /package/dist/{server-postgresql/src/services → services}/entity-helpers.d.ts +0 -0
  165. /package/dist/{server-postgresql/src/services → services}/entityService.d.ts +0 -0
  166. /package/dist/{server-postgresql/src/services → services}/index.d.ts +0 -0
  167. /package/dist/{server-postgresql/src/services → services}/realtimeService.d.ts +0 -0
  168. /package/dist/{server-postgresql/src/utils → utils}/drizzle-conditions.d.ts +0 -0
package/README.md CHANGED
@@ -1,106 +1,86 @@
1
- # @rebasepro/postgresql
1
+ # @rebasepro/server-postgresql
2
2
 
3
- PostgreSQL data source client for Rebase with real-time WebSocket connectivity.
4
-
5
- This package provides a complete client-side implementation for connecting Rebase applications to PostgreSQL backends, featuring real-time synchronization via WebSockets.
3
+ PostgreSQL database driver for Rebase, built on Drizzle ORM.
6
4
 
7
5
  ## Installation
8
6
 
9
7
  ```bash
10
- npm install @rebasepro/postgresql @rebasepro/core
8
+ pnpm add @rebasepro/server-postgresql
11
9
  ```
12
10
 
13
- ## Usage
11
+ ## What This Package Does
14
12
 
15
- ### Basic Setup with React Hook
13
+ Implements the Rebase `DatabaseAdapter` / `BackendBootstrapper` interfaces for PostgreSQL. It provides connection pooling, a Drizzle-based data driver, Postgres LISTEN/NOTIFY realtime, auth table management, entity history, schema generation, branching, read replicas, and WebSocket support. Plug it into `@rebasepro/server-core` via `createPostgresAdapter()` or `createPostgresBootstrapper()`.
16
14
 
17
- ```typescript
18
- import { usePostgresDataSource } from "@rebasepro/postgresql";
19
- import { Rebase } from "@rebasepro/core";
20
-
21
- function App() {
22
- const dataSource = usePostgresDataSource({
23
- baseUrl: "http://localhost:3001",
24
- websocketUrl: "ws://localhost:3001", // Optional, will be inferred from baseUrl
25
- headers: { // Optional
26
- "Authorization": "Bearer your-token"
27
- }
28
- });
29
-
30
- return (
31
- <Rebase
32
- dataSource={dataSource}
33
- collections={collections}
34
- // ... other props
35
- />
36
- );
37
- }
38
- ```
15
+ ## Key Exports
39
16
 
40
- ### Creating Data Source Directly
17
+ | Export | Description |
18
+ |--------|-------------|
19
+ | `createPostgresAdapter(config)` | Creates a `DatabaseAdapter` for use with `initializeRebaseBackend({ database: ... })`. Recommended API. |
20
+ | `createPostgresBootstrapper(config)` | Lower-level `BackendBootstrapper` factory. Used internally by the adapter. |
21
+ | `createPostgresDatabaseConnection(url, schema?, poolConfig?)` | Creates a production-grade pooled Drizzle connection. Returns `{ db, pool, connectionString }`. |
22
+ | `createDirectDatabaseConnection(url, schema?, poolConfig?)` | Non-pooled connection for LISTEN/NOTIFY and advisory locks (bypasses PgBouncer). |
23
+ | `createReadReplicaConnection(url, schema?, poolConfig?)` | Read-only connection for routing reads to replicas. |
24
+ | `PostgresBackendDriver` | The `DataDriver` implementation — CRUD, filtering, RLS, subcollections, admin SQL. |
25
+ | `RealtimeService` | Postgres LISTEN/NOTIFY-based `RealtimeProvider`. |
26
+ | `DatabasePoolManager` | Per-branch/per-tenant dynamic pool management (used with `ADMIN_CONNECTION_STRING`). |
27
+ | `PostgresCollectionRegistry` | Collection → Drizzle table registry with enum and relation tracking. |
28
+ | `BranchService` | Database branching (schema-level isolation). |
29
+ | `generateDrizzleSchema(collections)` | Generates Drizzle schema code from collection definitions. |
30
+ | `createAuthSchema(schemaName?)` | Generates Drizzle tables for the auth system (`users`, `roles`, `user_roles`). |
41
31
 
42
- ```typescript
43
- import { createPostgresDataSource } from "@rebasepro/postgresql";
32
+ ## Quick Start
44
33
 
45
- const dataSource = createPostgresDataSource({
46
- baseUrl: "http://localhost:3001",
47
- websocketUrl: "ws://localhost:3001"
34
+ ```typescript
35
+ import { createPostgresDatabaseConnection } from "@rebasepro/server-postgresql";
36
+ import { createPostgresAdapter } from "@rebasepro/server-postgresql";
37
+ import { initializeRebaseBackend } from "@rebasepro/server-core";
38
+ import * as schema from "./generated/schema";
39
+
40
+ // Create connection
41
+ const { db, pool } = createPostgresDatabaseConnection(
42
+ process.env.DATABASE_URL,
43
+ schema
44
+ );
45
+
46
+ // Create adapter and pass to server-core
47
+ const database = createPostgresAdapter({
48
+ connection: db,
49
+ connectionString: process.env.DATABASE_URL,
50
+ schema: { tables: schema },
48
51
  });
49
- ```
50
52
 
51
- ## Features
52
-
53
- - **Real-time Synchronization**: WebSocket-based real-time updates for collections and entities
54
- - **Automatic Reconnection**: Built-in reconnection logic with exponential backoff
55
- - **Type Safety**: Full TypeScript support with Rebase core types
56
- - **Error Handling**: Comprehensive error handling with custom error types
57
- - **Connection Management**: Connection status monitoring and queue management
58
-
59
- ## API
60
-
61
- ### Configuration
53
+ const backend = await initializeRebaseBackend({
54
+ app,
55
+ server,
56
+ database,
57
+ collections,
58
+ auth: { /* ... */ },
59
+ });
62
60
 
63
- ```typescript
64
- interface PostgresDataSourceConfig {
65
- baseUrl: string; // Backend server URL
66
- websocketUrl?: string; // WebSocket URL (optional)
67
- headers?: Record<string, string>; // Custom headers (optional)
68
- }
61
+ // Graceful shutdown
62
+ process.on("SIGTERM", async () => {
63
+ await backend.shutdown();
64
+ await pool.end();
65
+ });
69
66
  ```
70
67
 
71
- ### Methods
72
-
73
- The PostgreSQL data source implements all Rebase `DataSource` methods:
74
-
75
- - `fetchCollection<M>(props): Promise<Entity<M>[]>`
76
- - `fetchEntity<M>(props): Promise<Entity<M> | undefined>`
77
- - `saveEntity<M>(props): Promise<Entity<M>>`
78
- - `deleteEntity<M>(props): Promise<void>`
79
- - `checkUniqueField(...): Promise<boolean>`
80
- - `generateEntityId(...): string`
81
- - `countEntities<M>(props): Promise<number>`
82
- - `listenCollection<M>(props): () => void`
83
- - `listenEntity<M>(props): () => void`
84
-
85
- ## Backend Requirements
86
-
87
- This client expects a WebSocket-enabled backend that handles the following message types:
88
-
89
- - `FETCH_COLLECTION`
90
- - `FETCH_ENTITY`
91
- - `SAVE_ENTITY`
92
- - `DELETE_ENTITY`
93
- - `CHECK_UNIQUE_FIELD`
94
- - `GENERATE_ENTITY_ID`
95
- - `COUNT_ENTITIES`
96
- - `subscribe_collection`
97
- - `subscribe_entity`
98
- - `unsubscribe`
99
-
100
- ## Development
101
-
102
- This package is part of the Rebase monorepo. For development instructions, see the main repository README.
103
-
104
- ## License
105
-
106
- MIT
68
+ ## Connection Pool Defaults
69
+
70
+ | Option | Default |
71
+ |--------|---------|
72
+ | `max` | 20 |
73
+ | `idleTimeoutMillis` | 30,000 |
74
+ | `connectionTimeoutMillis` | 10,000 |
75
+ | `queryTimeout` | 30,000 |
76
+ | `statementTimeout` | 30,000 |
77
+ | `keepAlive` | true |
78
+
79
+ ## Related Packages
80
+
81
+ | Package | Role |
82
+ |---------|------|
83
+ | `@rebasepro/server-core` | Backend orchestrator that consumes this adapter |
84
+ | `@rebasepro/types` | Shared interfaces (`DatabaseAdapter`, `BackendBootstrapper`, `DataDriver`) |
85
+ | `@rebasepro/sdk-generator` | Generates typed SDKs from collections |
86
+ | `@rebasepro/common` | Default collections and shared utilities |
@@ -1,5 +1,5 @@
1
1
  import { DatabaseAdapter } from "@rebasepro/types";
2
- import type { PostgresDriverConfig } from "@rebasepro/server-core";
2
+ import type { PostgresDriverConfig } from "./PostgresBootstrapper";
3
3
  /**
4
4
  * Creates a Postgres database adapter for Rebase.
5
5
  */
@@ -3,9 +3,8 @@ import { BranchService } from "./services/BranchService";
3
3
  import { RealtimeService } from "./services/realtimeService";
4
4
  import { DatabasePoolManager } from "./databasePoolManager";
5
5
  import { DrizzleClient } from "./interfaces";
6
- import { User, RebaseClient } from "@rebasepro/types";
6
+ import { DatabaseAdmin, DataDriver, DeleteEntityProps, Entity, EntityCollection, FetchCollectionProps, FetchEntityProps, ListenCollectionProps, ListenEntityProps, RebaseClient, RebaseData, RestFetchService, SaveEntityProps, TableMetadata, User } from "@rebasepro/types";
7
7
  import { PostgresCollectionRegistry } from "./collections/PostgresCollectionRegistry";
8
- import { DataDriver, DeleteEntityProps, Entity, EntityCollection, FetchCollectionProps, FetchEntityProps, ListenCollectionProps, ListenEntityProps, SaveEntityProps, RebaseData, TableMetadata, DatabaseAdmin, RestFetchService } from "@rebasepro/types";
9
8
  import { HistoryService } from "./history/HistoryService";
10
9
  export declare class PostgresBackendDriver implements DataDriver {
11
10
  db: DrizzleClient;
@@ -44,6 +43,7 @@ export declare class PostgresBackendDriver implements DataDriver {
44
43
  * implements the matching method signatures.
45
44
  */
46
45
  get restFetchService(): import("./services").EntityFetchService;
46
+ private buildCallContext;
47
47
  private resolveCollectionCallbacks;
48
48
  fetchCollection<M extends Record<string, unknown>>({ path, collection, filter, limit, offset, startAfter, orderBy, searchString, order, vectorSearch }: FetchCollectionProps<M>): Promise<Entity<M>[]>;
49
49
  listenCollection<M extends Record<string, unknown>>({ path, collection, filter, limit, offset, startAfter, orderBy, searchString, order, onUpdate, onError }: ListenCollectionProps<M>): () => void;
@@ -9,7 +9,17 @@ import { PostgresBackendDriver } from "./PostgresBackendDriver";
9
9
  import { RealtimeService } from "./services/realtimeService";
10
10
  import { DatabasePoolManager } from "./databasePoolManager";
11
11
  import { PostgresCollectionRegistry } from "./collections/PostgresCollectionRegistry";
12
- import type { PostgresDriverConfig } from "@rebasepro/server-core";
12
+ export interface PostgresDriverConfig {
13
+ connectionString?: string;
14
+ adminConnectionString?: string;
15
+ readConnectionString?: string;
16
+ connection?: unknown;
17
+ schema?: {
18
+ tables?: Record<string, unknown>;
19
+ enums?: Record<string, unknown>;
20
+ relations?: Record<string, unknown>;
21
+ };
22
+ }
13
23
  /**
14
24
  * Opaque internals bag that PostgresBootstrapper stores during `initializeDriver()`
15
25
  * and re-uses in subsequent lifecycle hooks.
@@ -1,13 +1,13 @@
1
1
  import { NodePgDatabase } from "drizzle-orm/node-postgres";
2
- import { PgTable, AnyPgColumn } from "drizzle-orm/pg-core";
2
+ import type { RebasePgTable } from "../types";
3
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
- refreshTokens: PgTable & Record<string, AnyPgColumn>;
8
- passwordResetTokens: PgTable & Record<string, AnyPgColumn>;
9
- appConfig: PgTable & Record<string, AnyPgColumn>;
10
- userIdentities: PgTable & Record<string, AnyPgColumn>;
6
+ users: RebasePgTable;
7
+ refreshTokens: RebasePgTable;
8
+ passwordResetTokens: RebasePgTable;
9
+ appConfig: RebasePgTable;
10
+ userIdentities: RebasePgTable;
11
11
  }
12
12
  /**
13
13
  * PostgreSQL implementation of UserRepository.
@@ -17,7 +17,7 @@ export declare class UserService implements UserRepository {
17
17
  private db;
18
18
  private usersTable;
19
19
  private userIdentitiesTable;
20
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
20
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
21
21
  private getQualifiedUsersTableName;
22
22
  private mapRowToUser;
23
23
  private mapPayload;
@@ -74,7 +74,7 @@ export declare class UserService implements UserRepository {
74
74
  export declare class RefreshTokenService {
75
75
  private db;
76
76
  private refreshTokensTable;
77
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
77
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
78
78
  private getQualifiedRefreshTokensTableName;
79
79
  createToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
80
80
  findByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
@@ -89,7 +89,7 @@ export declare class RefreshTokenService {
89
89
  export declare class PasswordResetTokenService {
90
90
  private db;
91
91
  private passwordResetTokensTable;
92
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
92
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
93
93
  private getQualifiedPasswordResetTokensTableName;
94
94
  /**
95
95
  * Create a password reset token
@@ -123,7 +123,7 @@ export declare class PostgresTokenRepository implements TokenRepository {
123
123
  private db;
124
124
  private refreshTokenService;
125
125
  private passwordResetTokenService;
126
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
126
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
127
127
  createRefreshToken(userId: string, tokenHash: string, expiresAt: Date, userAgent?: string, ipAddress?: string): Promise<void>;
128
128
  findRefreshTokenByHash(tokenHash: string): Promise<RefreshTokenInfo | null>;
129
129
  deleteRefreshToken(tokenHash: string): Promise<void>;
@@ -145,7 +145,7 @@ export declare class PostgresAuthRepository implements AuthRepository {
145
145
  private db;
146
146
  private userService;
147
147
  private tokenRepository;
148
- constructor(db: NodePgDatabase, tableOrTables?: (PgTable & Record<string, AnyPgColumn>) | Partial<AuthSchemaTables>);
148
+ constructor(db: NodePgDatabase, tableOrTables?: RebasePgTable | Partial<AuthSchemaTables>);
149
149
  createUser(data: CreateUserData): Promise<UserData>;
150
150
  getUserById(id: string): Promise<UserData | null>;
151
151
  getUserByEmail(email: string): Promise<UserData | null>;
@@ -19,6 +19,10 @@ export declare class PostgresCollectionRegistry extends CollectionRegistry imple
19
19
  * Checks if a specific collection has a registered table
20
20
  */
21
21
  hasTableForCollection(tableName: string): boolean;
22
+ /**
23
+ * Returns all registered table names.
24
+ */
25
+ getTableNames(): string[];
22
26
  /**
23
27
  * Finds collections assigned to a specific driver that do not have a registered table.
24
28
  */
@@ -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.