@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.
- package/LICENSE +21 -0
- package/dist/asset-adapter.d.ts +13 -1
- package/dist/asset-adapter.d.ts.map +1 -1
- package/dist/asset-adapter.js +87 -4
- package/dist/asset-adapter.js.map +1 -1
- package/dist/document-adapter.d.ts +13 -1
- package/dist/document-adapter.d.ts.map +1 -1
- package/dist/document-adapter.js +113 -3
- package/dist/document-adapter.js.map +1 -1
- package/dist/filter-parser.d.ts +36 -0
- package/dist/filter-parser.d.ts.map +1 -0
- package/dist/filter-parser.js +320 -0
- package/dist/filter-parser.js.map +1 -0
- package/dist/index.d.ts +29 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -5
- package/dist/index.js.map +1 -1
- package/dist/organization-adapter.d.ts.map +1 -1
- package/dist/schema-adapter.d.ts.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +4 -24
- package/dist/schema.js.map +1 -1
- package/dist/user-adapter.d.ts.map +1 -1
- package/dist/user-adapter.js.map +1 -1
- package/package.json +42 -38
|
@@ -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:
|
|
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
|
|
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
|
-
/**
|
|
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;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
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, () =>
|
|
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
|
-
//
|
|
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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"}
|