@aphexcms/postgresql-adapter 0.1.0 → 0.1.2

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.
@@ -0,0 +1,320 @@
1
+ // PostgreSQL filter parser - converts Where filters to Drizzle SQL conditions
2
+ // Handles JSONB columns (draftData/publishedData) for document fields
3
+ import { sql, eq, ne, gt, gte, lt, lte, inArray, notInArray, like, ilike, isNull, isNotNull, and as drizzleAnd, or as drizzleOr } from 'drizzle-orm';
4
+ /**
5
+ * Top-level document columns (not in JSONB)
6
+ * These are accessed as regular columns
7
+ */
8
+ const DOCUMENT_COLUMNS = new Set([
9
+ 'id',
10
+ 'organizationId',
11
+ 'type',
12
+ 'status',
13
+ 'createdBy',
14
+ 'updatedBy',
15
+ 'publishedAt',
16
+ 'createdAt',
17
+ 'updatedAt',
18
+ 'publishedHash'
19
+ ]);
20
+ /**
21
+ * Parse a Where clause into Drizzle SQL conditions
22
+ *
23
+ * @param where - The where filter object
24
+ * @param table - The Drizzle table object
25
+ * @param perspective - Which JSONB column to query ('draft' or 'published')
26
+ * @returns SQL condition
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const condition = parseWhere(
31
+ * {
32
+ * status: { equals: 'published' },
33
+ * title: { contains: 'blog' }
34
+ * },
35
+ * documentsTable,
36
+ * 'draft'
37
+ * );
38
+ * ```
39
+ */
40
+ export function parseWhere(where, table, // PgTable type - use any for flexibility
41
+ perspective = 'draft') {
42
+ if (!where) {
43
+ return undefined;
44
+ }
45
+ const conditions = [];
46
+ // Handle AND operator
47
+ if (where.and && Array.isArray(where.and)) {
48
+ const andConditions = where.and
49
+ .map((w) => parseWhere(w, table, perspective))
50
+ .filter((c) => c !== undefined);
51
+ if (andConditions.length > 0) {
52
+ conditions.push(drizzleAnd(...andConditions));
53
+ }
54
+ }
55
+ // Handle OR operator
56
+ if (where.or && Array.isArray(where.or)) {
57
+ const orConditions = where.or
58
+ .map((w) => parseWhere(w, table, perspective))
59
+ .filter((c) => c !== undefined);
60
+ if (orConditions.length > 0) {
61
+ conditions.push(drizzleOr(...orConditions));
62
+ }
63
+ }
64
+ // Handle field filters
65
+ for (const [field, filter] of Object.entries(where)) {
66
+ // Skip logical operators (already handled above)
67
+ if (field === 'and' || field === 'or') {
68
+ continue;
69
+ }
70
+ // Parse the filter
71
+ const condition = parseFieldFilter(field, filter, table, perspective);
72
+ if (condition) {
73
+ conditions.push(condition);
74
+ }
75
+ }
76
+ // Combine all conditions with AND
77
+ if (conditions.length === 0) {
78
+ return undefined;
79
+ }
80
+ if (conditions.length === 1) {
81
+ return conditions[0];
82
+ }
83
+ return drizzleAnd(...conditions);
84
+ }
85
+ /**
86
+ * Parse a single field filter into a Drizzle SQL condition
87
+ */
88
+ function parseFieldFilter(fieldPath, filter, table, perspective) {
89
+ // Determine if this is a top-level column or JSONB field
90
+ const isTopLevelColumn = DOCUMENT_COLUMNS.has(fieldPath);
91
+ // If filter is a direct value (not an object), treat as equals
92
+ if (filter === null || filter === undefined || typeof filter !== 'object') {
93
+ if (isTopLevelColumn) {
94
+ const column = table[fieldPath];
95
+ return column ? eq(column, filter) : undefined;
96
+ }
97
+ else {
98
+ return buildJsonbCondition(fieldPath, 'equals', filter, table, perspective);
99
+ }
100
+ }
101
+ // If it's an array, treat as 'in' operation
102
+ if (Array.isArray(filter)) {
103
+ if (isTopLevelColumn) {
104
+ const column = table[fieldPath];
105
+ return column ? inArray(column, filter) : undefined;
106
+ }
107
+ else {
108
+ return buildJsonbCondition(fieldPath, 'in', filter, table, perspective);
109
+ }
110
+ }
111
+ // Otherwise, it should be a FieldFilter object
112
+ const fieldFilter = filter;
113
+ const conditions = [];
114
+ // Process each operator
115
+ for (const [operator, value] of Object.entries(fieldFilter)) {
116
+ if (value === undefined)
117
+ continue;
118
+ const condition = isTopLevelColumn
119
+ ? buildColumnCondition(fieldPath, operator, value, table)
120
+ : buildJsonbCondition(fieldPath, operator, value, table, perspective);
121
+ if (condition) {
122
+ conditions.push(condition);
123
+ }
124
+ }
125
+ // Combine all conditions for this field with AND
126
+ if (conditions.length === 0) {
127
+ return undefined;
128
+ }
129
+ if (conditions.length === 1) {
130
+ return conditions[0];
131
+ }
132
+ return drizzleAnd(...conditions);
133
+ }
134
+ /**
135
+ * Build a condition for a top-level column
136
+ */
137
+ function buildColumnCondition(fieldPath, operator, value, table) {
138
+ const column = table[fieldPath];
139
+ if (!column) {
140
+ console.warn(`[Filter Parser] Column not found: ${fieldPath}`);
141
+ return undefined;
142
+ }
143
+ switch (operator) {
144
+ case 'equals':
145
+ return eq(column, value);
146
+ case 'not_equals':
147
+ return ne(column, value);
148
+ case 'in':
149
+ return inArray(column, value);
150
+ case 'not_in':
151
+ return notInArray(column, value);
152
+ case 'exists':
153
+ return value ? isNotNull(column) : isNull(column);
154
+ case 'greater_than':
155
+ return gt(column, value);
156
+ case 'greater_than_equal':
157
+ return gte(column, value);
158
+ case 'less_than':
159
+ return lt(column, value);
160
+ case 'less_than_equal':
161
+ return lte(column, value);
162
+ case 'like':
163
+ return like(column, value);
164
+ case 'contains':
165
+ return ilike(column, `%${value}%`);
166
+ case 'starts_with':
167
+ return ilike(column, `${value}%`);
168
+ case 'ends_with':
169
+ return ilike(column, `%${value}`);
170
+ default:
171
+ console.warn(`[Filter Parser] Unknown operator: ${operator}`);
172
+ return undefined;
173
+ }
174
+ }
175
+ /**
176
+ * Build a condition for a JSONB field
177
+ * Uses PostgreSQL JSONB operators
178
+ */
179
+ function buildJsonbCondition(fieldPath, operator, value, table, perspective) {
180
+ // Get the JSONB column (draftData or publishedData)
181
+ const jsonbColumnName = perspective === 'draft' ? 'draftData' : 'publishedData';
182
+ const jsonbColumn = table[jsonbColumnName];
183
+ if (!jsonbColumn) {
184
+ console.warn(`[Filter Parser] JSONB column not found: ${jsonbColumnName}`);
185
+ return undefined;
186
+ }
187
+ // Split field path for nested access (e.g., 'author.name' -> ['author', 'name'])
188
+ const pathParts = fieldPath.split('.');
189
+ // Build JSONB path: draftData->'author'->>'name' or draftData->>'title'
190
+ // -> returns JSONB, ->> returns text
191
+ const buildPath = (asText = true) => {
192
+ if (pathParts.length === 1) {
193
+ // Simple field: draftData->>'title'
194
+ return asText
195
+ ? sql `${jsonbColumn}->>${pathParts[0]}`
196
+ : sql `${jsonbColumn}->${pathParts[0]}`;
197
+ }
198
+ else {
199
+ // Nested field: draftData->'author'->>'name'
200
+ const allButLast = pathParts.slice(0, -1);
201
+ const last = pathParts[pathParts.length - 1];
202
+ let pathSql = jsonbColumn;
203
+ for (const part of allButLast) {
204
+ pathSql = sql `${pathSql}->${part}`;
205
+ }
206
+ return asText ? sql `${pathSql}->>${last}` : sql `${pathSql}->${last}`;
207
+ }
208
+ };
209
+ switch (operator) {
210
+ case 'equals':
211
+ // For JSONB, handle different types appropriately
212
+ if (typeof value === 'boolean') {
213
+ // Cast JSONB text to boolean for comparison
214
+ return sql `(${buildPath(true)})::boolean = ${value}`;
215
+ }
216
+ else if (typeof value === 'number') {
217
+ // Cast JSONB text to numeric for comparison
218
+ return sql `(${buildPath(true)})::numeric = ${value}`;
219
+ }
220
+ else {
221
+ // Text comparison (default)
222
+ return sql `${buildPath(true)} = ${value}`;
223
+ }
224
+ case 'not_equals':
225
+ // Handle different types for not_equals too
226
+ if (typeof value === 'boolean') {
227
+ return sql `(${buildPath(true)})::boolean != ${value}`;
228
+ }
229
+ else if (typeof value === 'number') {
230
+ return sql `(${buildPath(true)})::numeric != ${value}`;
231
+ }
232
+ else {
233
+ return sql `${buildPath(true)} != ${value}`;
234
+ }
235
+ case 'in':
236
+ // Check if JSONB value is in array
237
+ return sql `${buildPath(true)} = ANY(${value})`;
238
+ case 'not_in':
239
+ return sql `${buildPath(true)} != ALL(${value})`;
240
+ case 'exists':
241
+ // Check if JSONB key exists
242
+ if (value) {
243
+ return sql `${buildPath(false)} IS NOT NULL`;
244
+ }
245
+ else {
246
+ return sql `${buildPath(false)} IS NULL`;
247
+ }
248
+ case 'greater_than':
249
+ // Cast to appropriate type for comparison
250
+ return sql `(${buildPath(true)})::numeric > ${value}`;
251
+ case 'greater_than_equal':
252
+ return sql `(${buildPath(true)})::numeric >= ${value}`;
253
+ case 'less_than':
254
+ return sql `(${buildPath(true)})::numeric < ${value}`;
255
+ case 'less_than_equal':
256
+ return sql `(${buildPath(true)})::numeric <= ${value}`;
257
+ case 'like':
258
+ return sql `${buildPath(true)} LIKE ${value}`;
259
+ case 'contains':
260
+ // Case-insensitive contains
261
+ return sql `${buildPath(true)} ILIKE ${'%' + value + '%'}`;
262
+ case 'starts_with':
263
+ return sql `${buildPath(true)} ILIKE ${value + '%'}`;
264
+ case 'ends_with':
265
+ return sql `${buildPath(true)} ILIKE ${'%' + value}`;
266
+ default:
267
+ console.warn(`[Filter Parser] Unknown operator for JSONB: ${operator}`);
268
+ return undefined;
269
+ }
270
+ }
271
+ /**
272
+ * Parse a sort string or array into Drizzle order by clauses
273
+ *
274
+ * @param sort - Sort string or array of sort strings
275
+ * - Format: 'field' (ascending) or '-field' (descending)
276
+ * - Example: '-publishedAt' or ['title', '-createdAt']
277
+ * @param table - The Drizzle table object
278
+ * @param perspective - Which JSONB column to query for non-column fields
279
+ * @returns Array of SQL order by clauses
280
+ */
281
+ export function parseSort(sort, table, perspective = 'draft') {
282
+ if (!sort) {
283
+ return [];
284
+ }
285
+ const sortArray = Array.isArray(sort) ? sort : [sort];
286
+ const orderBy = [];
287
+ for (const sortField of sortArray) {
288
+ const trimmed = sortField.trim();
289
+ if (!trimmed)
290
+ continue;
291
+ // Check if descending (starts with -)
292
+ const descending = trimmed.startsWith('-');
293
+ const fieldName = descending ? trimmed.substring(1) : trimmed;
294
+ // Check if top-level column or JSONB field
295
+ const isTopLevelColumn = DOCUMENT_COLUMNS.has(fieldName);
296
+ if (isTopLevelColumn) {
297
+ const column = table[fieldName];
298
+ if (column) {
299
+ orderBy.push(descending ? sql `${column} DESC` : sql `${column} ASC`);
300
+ }
301
+ }
302
+ else {
303
+ // JSONB field
304
+ const jsonbColumnName = perspective === 'draft' ? 'draftData' : 'publishedData';
305
+ const jsonbColumn = table[jsonbColumnName];
306
+ if (jsonbColumn) {
307
+ const pathParts = fieldName.split('.');
308
+ let pathSql = jsonbColumn;
309
+ // Build path
310
+ for (let i = 0; i < pathParts.length - 1; i++) {
311
+ pathSql = sql `${pathSql}->${pathParts[i]}`;
312
+ }
313
+ const finalPath = sql `${pathSql}->>${pathParts[pathParts.length - 1]}`;
314
+ orderBy.push(descending ? sql `${finalPath} DESC` : sql `${finalPath} ASC`);
315
+ }
316
+ }
317
+ }
318
+ return orderBy;
319
+ }
320
+ //# sourceMappingURL=filter-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-parser.js","sourceRoot":"","sources":["../src/filter-parser.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { drizzle } from 'drizzle-orm/postgres-js';
2
- import type { DatabaseAdapter, DatabaseProvider, SchemaType } from '@aphexcms/cms-core/server';
2
+ import type { DatabaseAdapter, DatabaseProvider, NewOrganizationMember, SchemaType } from '@aphexcms/cms-core/server';
3
3
  import type { CMSSchema } from './schema.js';
4
4
  /**
5
5
  * Combined PostgreSQL adapter that implements the full DatabaseAdapter interface
@@ -41,6 +41,12 @@ export declare class PostgreSQLAdapter implements DatabaseAdapter {
41
41
  countAssets(organizationId: string): Promise<number>;
42
42
  countAssetsByType(organizationId: string): Promise<Record<string, number>>;
43
43
  getTotalAssetsSize(organizationId: string): Promise<number>;
44
+ findManyDocAdvanced(organizationId: string, collectionName: string, options?: any): Promise<import("@aphexcms/cms-core").FindResult<import("@aphexcms/cms-core").Document>>;
45
+ findByDocIdAdvanced(organizationId: string, id: string, options?: any): Promise<import("@aphexcms/cms-core").Document | null>;
46
+ countDocuments(organizationId: string, collectionName: string, where?: any): Promise<number>;
47
+ findManyAssetsAdvanced(organizationId: string, options?: any): Promise<import("@aphexcms/cms-core").FindResult<import("@aphexcms/cms-core").Asset>>;
48
+ findAssetByIdAdvanced(organizationId: string, id: string): Promise<import("@aphexcms/cms-core").Asset | null>;
49
+ countAssetsAdvanced(organizationId: string, where?: any): Promise<number>;
44
50
  createUserProfile(data: any): Promise<import("@aphexcms/cms-core").UserProfile>;
45
51
  findUserProfileById(userId: string): Promise<import("@aphexcms/cms-core").UserProfile | null>;
46
52
  deleteUserProfile(userId: string): Promise<boolean>;
@@ -67,7 +73,7 @@ export declare class PostgreSQLAdapter implements DatabaseAdapter {
67
73
  findOrganizationBySlug(slug: string): Promise<import("@aphexcms/cms-core").Organization | null>;
68
74
  updateOrganization(id: string, data: any): Promise<import("@aphexcms/cms-core").Organization | null>;
69
75
  deleteOrganization(id: string): Promise<boolean>;
70
- addMember(data: any): Promise<import("@aphexcms/cms-core").OrganizationMember>;
76
+ addMember(data: NewOrganizationMember): Promise<import("@aphexcms/cms-core").OrganizationMember>;
71
77
  removeMember(organizationId: string, userId: string): Promise<boolean>;
72
78
  removeAllMembers(organizationId: string): Promise<boolean>;
73
79
  updateMemberRole(organizationId: string, userId: string, role: 'owner' | 'admin' | 'editor' | 'viewer'): Promise<import("@aphexcms/cms-core").OrganizationMember | null>;
@@ -96,14 +102,29 @@ export declare class PostgreSQLAdapter implements DatabaseAdapter {
96
102
  *
97
103
  * @param organizationId - The organization ID to set as context
98
104
  * @param fn - Function to execute within the transaction context
105
+ * @param options - Optional configuration
106
+ * @param options.overrideAccess - Bypass RLS policies (for system operations)
107
+ * @param options.userId - User ID for audit logging
108
+ * @param options.userRole - User role for RLS policy checks
99
109
  * @returns The result of the function
100
110
  *
101
111
  * @example
112
+ * // Regular operation with RLS
102
113
  * const documents = await adapter.withOrgContext(auth.organizationId, async () => {
103
114
  * return adapter.findManyDoc(auth.organizationId, { type: 'post' });
104
115
  * });
116
+ *
117
+ * @example
118
+ * // System operation bypassing RLS
119
+ * const allDocuments = await adapter.withOrgContext('system', async () => {
120
+ * return adapter.findManyDoc('', { type: 'post' });
121
+ * }, { overrideAccess: true });
105
122
  */
106
- withOrgContext<T>(organizationId: string, fn: () => Promise<T>): Promise<T>;
123
+ withOrgContext<T>(organizationId: string, fn: () => Promise<T>, options?: {
124
+ overrideAccess?: boolean;
125
+ userId?: string;
126
+ userRole?: string;
127
+ }): Promise<T>;
107
128
  /**
108
129
  * Get all child organizations for a given parent organization
109
130
  * Used for parent-child hierarchy access control
@@ -137,7 +158,11 @@ export interface PostgreSQLConfig {
137
158
  };
138
159
  /** Multi-tenancy configuration */
139
160
  multiTenancy?: {
140
- /** Enable Row-Level Security (RLS) policies (default: true) */
161
+ /**
162
+ * Enable Row-Level Security (RLS) policies (default: true)
163
+ * Provides database-level defense in depth alongside LocalAPI's PermissionChecker
164
+ * Can be bypassed with context.overrideAccess = true for system operations
165
+ */
141
166
  enableRLS?: boolean;
142
167
  /** Enable parent-child organization hierarchy (default: true) */
143
168
  enableHierarchy?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAKvD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAMtH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IACxD,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,SAAgB,UAAU,EAAE,OAAO,CAAC;IACpC,SAAgB,gBAAgB,EAAE,OAAO,CAAC;gBAE9B,MAAM,EAAE;QACnB,EAAE,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;QAC/B,MAAM,EAAE,SAAS,CAAC;QAClB,YAAY,CAAC,EAAE;YACd,SAAS,CAAC,EAAE,OAAO,CAAC;YACpB,eAAe,CAAC,EAAE,OAAO,CAAC;SAC1B,CAAC;KACF;IAoBK,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAsBjD,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAkB9D,cAAc,CAAC,IAAI,EAAE,GAAG;IAMxB,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM;IAkBhF,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAkBhD,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAkB7C,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAkB/C,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAiBpD,kBAAkB,CAAC,cAAc,EAAE,MAAM;IAqBzC,WAAW,CAAC,IAAI,EAAE,GAAG;IAIrB,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAMhD,mBAAmB,CAAC,EAAE,EAAE,MAAM;IAK9B,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAsBhD,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAMzD,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAM9C,WAAW,CAAC,cAAc,EAAE,MAAM;IAIlC,iBAAiB,CAAC,cAAc,EAAE,MAAM;IAMxC,kBAAkB,CAAC,cAAc,EAAE,MAAM;IAOzC,mBAAmB,CACxB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,GAAG;IAOR,mBAAmB,CACxB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,GAAG;IAOR,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAM1E,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAM5D,qBAAqB,CAC1B,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM;IAOL,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAOvD,iBAAiB,CAAC,IAAI,EAAE,GAAG;IAI3B,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAIlC,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAItC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAMtC,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIvD,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAI1F,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAIxF,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIpC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,kBAAkB,CAAC,IAAI,EAAE,GAAG;IAI5B,oBAAoB,CAAC,EAAE,EAAE,MAAM;IAI/B,sBAAsB,CAAC,IAAI,EAAE,MAAM;IAInC,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAIxC,kBAAkB,CAAC,EAAE,EAAE,MAAM;IAI7B,SAAS,CAAC,IAAI,EAAE,qBAAqB;IAIrC,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAInD,gBAAgB,CAAC,cAAc,EAAE,MAAM;IAIvC,gBAAgB,CACrB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ;IAKxC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAIzD,qBAAqB,CAAC,MAAM,EAAE,MAAM;IAIpC,uBAAuB,CAAC,cAAc,EAAE,MAAM;IAI9C,gBAAgB,CAAC,IAAI,EAAE,GAAG;IAI1B,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAInC,2BAA2B,CAAC,cAAc,EAAE,MAAM;IAIlD,sBAAsB,CAAC,KAAK,EAAE,MAAM;IAIpC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAI9C,gBAAgB,CAAC,EAAE,EAAE,MAAM;IAI3B,oBAAoB,CAAC,cAAc,EAAE,MAAM;IAI3C,yBAAyB;IAIzB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAIxD,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAKtC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAapC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,cAAc,CAAC,CAAC,EACrB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,GACC,OAAO,CAAC,CAAC,CAAC;IA2Cb;;;;;OAKG;IACG,qBAAqB,CAAC,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBtE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAUnC;AAGD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI9F,YAAY,EACX,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAQ,EACR,UAAU,EACV,aAAa,EACb,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,OAAO,CAAC,EAAE;QACT,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACnB,CAAC;IACF,kCAAkC;IAClC,YAAY,CAAC,EAAE;QACd;;;;WAIG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,iEAAiE;QACjE,eAAe,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACF;AAsCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEnF"}
package/dist/index.js CHANGED
@@ -26,6 +26,9 @@ export class PostgreSQLAdapter {
26
26
  this.db = config.db;
27
27
  this.tables = config.tables;
28
28
  // Multi-tenancy config with defaults
29
+ // RLS enabled by default for defense in depth (database-level security)
30
+ // LocalAPI's PermissionChecker provides application-level security
31
+ // Both can be bypassed with context.overrideAccess = true
29
32
  this.rlsEnabled = config.multiTenancy?.enableRLS ?? true;
30
33
  this.hierarchyEnabled = config.multiTenancy?.enableHierarchy ?? true;
31
34
  // Pass the Drizzle instance and tables to all adapters
@@ -42,6 +45,7 @@ export class PostgreSQLAdapter {
42
45
  // include child organizations in the query
43
46
  if (this.hierarchyEnabled && !filters?.filterOrganizationIds) {
44
47
  const childOrgIds = await this.getChildOrganizations(organizationId);
48
+ console.log(`[Hierarchy] Parent org ${organizationId} has ${childOrgIds.length} child orgs:`, childOrgIds);
45
49
  const orgIds = [organizationId, ...childOrgIds];
46
50
  return this.documentAdapter.findManyDoc(organizationId, {
47
51
  ...filters,
@@ -177,7 +181,20 @@ export class PostgreSQLAdapter {
177
181
  return this.assetAdapter.findAssetByIdGlobal(id);
178
182
  }
179
183
  async findAssets(organizationId, filters) {
180
- return this.withOrgContext(organizationId, () => this.assetAdapter.findAssets(organizationId, filters));
184
+ return this.withOrgContext(organizationId, async () => {
185
+ // If hierarchy is enabled and no explicit filterOrganizationIds provided,
186
+ // include child organizations in the query
187
+ if (this.hierarchyEnabled && !filters?.filterOrganizationIds) {
188
+ const childOrgIds = await this.getChildOrganizations(organizationId);
189
+ console.log(`[Hierarchy] Parent org ${organizationId} has ${childOrgIds.length} child orgs for assets:`, childOrgIds);
190
+ const orgIds = [organizationId, ...childOrgIds];
191
+ return this.assetAdapter.findAssets(organizationId, {
192
+ ...filters,
193
+ filterOrganizationIds: orgIds
194
+ });
195
+ }
196
+ return this.assetAdapter.findAssets(organizationId, filters);
197
+ });
181
198
  }
182
199
  async updateAsset(organizationId, id, data) {
183
200
  return this.withOrgContext(organizationId, () => this.assetAdapter.updateAsset(organizationId, id, data));
@@ -194,6 +211,25 @@ export class PostgreSQLAdapter {
194
211
  async getTotalAssetsSize(organizationId) {
195
212
  return this.withOrgContext(organizationId, () => this.assetAdapter.getTotalAssetsSize(organizationId));
196
213
  }
214
+ // Advanced filtering methods (for unified Local API)
215
+ async findManyDocAdvanced(organizationId, collectionName, options) {
216
+ return this.withOrgContext(organizationId, () => this.documentAdapter.findManyDocAdvanced(organizationId, collectionName, options));
217
+ }
218
+ async findByDocIdAdvanced(organizationId, id, options) {
219
+ return this.withOrgContext(organizationId, () => this.documentAdapter.findByDocIdAdvanced(organizationId, id, options));
220
+ }
221
+ async countDocuments(organizationId, collectionName, where) {
222
+ return this.withOrgContext(organizationId, () => this.documentAdapter.countDocuments(organizationId, collectionName, where));
223
+ }
224
+ async findManyAssetsAdvanced(organizationId, options) {
225
+ return this.withOrgContext(organizationId, () => this.assetAdapter.findManyAssetsAdvanced(organizationId, options));
226
+ }
227
+ async findAssetByIdAdvanced(organizationId, id) {
228
+ return this.withOrgContext(organizationId, () => this.assetAdapter.findAssetByIdAdvanced(organizationId, id));
229
+ }
230
+ async countAssetsAdvanced(organizationId, where) {
231
+ return this.withOrgContext(organizationId, () => this.assetAdapter.countAssetsAdvanced(organizationId, where));
232
+ }
197
233
  // User Profile operations - delegate to user profile adapter
198
234
  async createUserProfile(data) {
199
235
  return this.userProfileAdapter.createUserProfile(data);
@@ -323,21 +359,40 @@ export class PostgreSQLAdapter {
323
359
  *
324
360
  * @param organizationId - The organization ID to set as context
325
361
  * @param fn - Function to execute within the transaction context
362
+ * @param options - Optional configuration
363
+ * @param options.overrideAccess - Bypass RLS policies (for system operations)
364
+ * @param options.userId - User ID for audit logging
365
+ * @param options.userRole - User role for RLS policy checks
326
366
  * @returns The result of the function
327
367
  *
328
368
  * @example
369
+ * // Regular operation with RLS
329
370
  * const documents = await adapter.withOrgContext(auth.organizationId, async () => {
330
371
  * return adapter.findManyDoc(auth.organizationId, { type: 'post' });
331
372
  * });
373
+ *
374
+ * @example
375
+ * // System operation bypassing RLS
376
+ * const allDocuments = await adapter.withOrgContext('system', async () => {
377
+ * return adapter.findManyDoc('', { type: 'post' });
378
+ * }, { overrideAccess: true });
332
379
  */
333
- async withOrgContext(organizationId, fn) {
380
+ async withOrgContext(organizationId, fn, options) {
334
381
  if (!this.rlsEnabled) {
335
382
  // If RLS is disabled, just execute the function directly
336
383
  return fn();
337
384
  }
385
+ // If overrideAccess is true, bypass RLS but still use transaction for consistency
386
+ if (options?.overrideAccess) {
387
+ return this.db.transaction(async (tx) => {
388
+ // Set override flag - RLS policies will check this
389
+ await tx.execute(sql.raw(`SET LOCAL app.override_access = 'true'`));
390
+ return fn();
391
+ });
392
+ }
338
393
  // Validate organizationId is a valid UUID to prevent SQL injection
339
394
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
340
- if (!uuidRegex.test(organizationId)) {
395
+ if (organizationId && !uuidRegex.test(organizationId)) {
341
396
  throw new Error('Invalid organization ID format');
342
397
  }
343
398
  // Use Drizzle's transaction API - SET LOCAL is automatically cleared on commit
@@ -346,6 +401,13 @@ export class PostgreSQLAdapter {
346
401
  // Note: SET LOCAL doesn't support parameterized queries, so we use sql.raw()
347
402
  // The organizationId is validated as a UUID above to prevent SQL injection
348
403
  await tx.execute(sql.raw(`SET LOCAL app.organization_id = '${organizationId}'`));
404
+ // Set user context if provided (for audit and role-based policies)
405
+ if (options?.userId) {
406
+ await tx.execute(sql.raw(`SET LOCAL app.user_id = '${options.userId}'`));
407
+ }
408
+ if (options?.userRole) {
409
+ await tx.execute(sql.raw(`SET LOCAL app.user_role = '${options.userRole}'`));
410
+ }
349
411
  // Execute the provided function
350
412
  // Note: The function should use the same db adapter, the transaction context applies to the connection
351
413
  return fn();
@@ -408,7 +470,7 @@ class PostgreSQLProvider {
408
470
  this.config = config;
409
471
  }
410
472
  createAdapter() {
411
- // If client is provided directly, use it with drizzle
473
+ // Initialize database connection
412
474
  if (this.config.client) {
413
475
  const db = drizzlePostgres(this.config.client, { schema: cmsSchema });
414
476
  return new PostgreSQLAdapter({
@@ -417,7 +479,6 @@ class PostgreSQLProvider {
417
479
  multiTenancy: this.config.multiTenancy
418
480
  });
419
481
  }
420
- // Otherwise create a new postgres client from connection string
421
482
  if (!this.config.connectionString) {
422
483
  throw new Error('PostgreSQL adapter requires either a client or connectionString');
423
484
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}