@memberjunction/generic-database-provider 5.8.0 → 5.10.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.
package/README.md
CHANGED
|
@@ -83,6 +83,32 @@ export class MyDatabaseProvider extends GenericDatabaseProvider {
|
|
|
83
83
|
}
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
## Server-Side Cache Backend
|
|
87
|
+
|
|
88
|
+
`GenericDatabaseProvider` owns the `LocalStorageProvider` property that all database providers (SQL Server, PostgreSQL) inherit. This is the cache backend used by `LocalCacheManager`, metadata persistence, and all server-side caching operations.
|
|
89
|
+
|
|
90
|
+
By default, it uses `InMemoryLocalStorageProvider` — data stored in a `Map` inside the Node.js process. For production deployments, swap it to a Redis-backed provider for shared, persistent caching across multiple MJAPI instances.
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
import { RedisLocalStorageProvider } from '@memberjunction/redis-provider';
|
|
94
|
+
import { Metadata } from '@memberjunction/core';
|
|
95
|
+
import type { GenericDatabaseProvider } from '@memberjunction/generic-database-provider';
|
|
96
|
+
|
|
97
|
+
// During server startup:
|
|
98
|
+
const redis = new RedisLocalStorageProvider({
|
|
99
|
+
url: process.env.REDIS_URL ?? 'redis://localhost:6379',
|
|
100
|
+
defaultTTLSeconds: 300,
|
|
101
|
+
});
|
|
102
|
+
(Metadata.Provider as GenericDatabaseProvider).SetLocalStorageProvider(redis);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
| Method | Description |
|
|
106
|
+
|--------|-------------|
|
|
107
|
+
| `LocalStorageProvider` (getter) | Returns the active `ILocalStorageProvider`, lazily creating an `InMemoryLocalStorageProvider` if none has been set |
|
|
108
|
+
| `SetLocalStorageProvider(provider)` | Replaces the active provider at runtime (e.g., to swap in Redis after configuration is loaded) |
|
|
109
|
+
|
|
110
|
+
See the [`@memberjunction/redis-provider` README](../RedisProvider/) for full configuration options, cloud provider examples (Azure Managed Redis, AWS ElastiCache), and production recommendations.
|
|
111
|
+
|
|
86
112
|
## SQL Logging
|
|
87
113
|
|
|
88
114
|
The SQL logging subsystem lives in GenericDatabaseProvider so it is available to all platform-specific providers (SQL Server, PostgreSQL, etc.). Sessions capture executed SQL statements to files with filtering, formatting, and Flyway migration support.
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* @module @memberjunction/generic-database-provider
|
|
17
17
|
*/
|
|
18
|
-
import { BaseEntity, DatabaseProviderBase, EntityInfo, EntityFieldInfo, EntitySaveOptions, EntityDeleteOptions, RunViewParams, RunViewResult, RunViewWithCacheCheckParams, RunViewsWithCacheCheckResponse, RunViewWithCacheCheckResult, RunQueryParams, RunQueryWithCacheCheckParams, RunQueriesWithCacheCheckResponse, RunQueryWithCacheCheckResult, QueryInfo, CompositeKey, DatasetItemFilterType, DatasetResultType, DatasetStatusResultType, IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
18
|
+
import { BaseEntity, DatabaseProviderBase, EntityInfo, EntityFieldInfo, EntitySaveOptions, EntityDeleteOptions, EntityPermissionType, ILocalStorageProvider, RunViewParams, RunViewResult, RunViewWithCacheCheckParams, RunViewsWithCacheCheckResponse, RunViewWithCacheCheckResult, RunQueryParams, RunQueryWithCacheCheckParams, RunQueriesWithCacheCheckResponse, RunQueryWithCacheCheckResult, QueryInfo, CompositeKey, DatasetItemFilterType, DatasetResultType, DatasetStatusResultType, IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
19
19
|
import { SqlLoggingOptions, SqlLoggingSession } from './types.js';
|
|
20
20
|
import { MJEntityAIActionEntity, MJQueryEntity, MJUserViewEntityExtended } from '@memberjunction/core-entities';
|
|
21
21
|
import { EntityAIActionParams } from '@memberjunction/aiengine';
|
|
@@ -40,6 +40,56 @@ export interface ExecuteSQLBatchOptions {
|
|
|
40
40
|
* to inherit these shared behaviors.
|
|
41
41
|
*/
|
|
42
42
|
export declare abstract class GenericDatabaseProvider extends DatabaseProviderBase {
|
|
43
|
+
/**************************************************************************/
|
|
44
|
+
/**************************************************************************/
|
|
45
|
+
/**
|
|
46
|
+
* The local storage provider backing server-side caching for metadata,
|
|
47
|
+
* RunView results, RunQuery results, and datasets.
|
|
48
|
+
*
|
|
49
|
+
* Defaults to {@link InMemoryLocalStorageProvider} (data lost on restart, not shared
|
|
50
|
+
* across instances). To enable persistent, shared caching, replace with a
|
|
51
|
+
* {@link https://www.npmjs.com/package/@memberjunction/redis-provider | RedisLocalStorageProvider}
|
|
52
|
+
* or any other {@link ILocalStorageProvider} implementation.
|
|
53
|
+
*
|
|
54
|
+
* Subclasses can override this property to supply a custom provider, or call
|
|
55
|
+
* {@link SetLocalStorageProvider} to swap the provider at runtime (e.g., after
|
|
56
|
+
* reading configuration).
|
|
57
|
+
*
|
|
58
|
+
* @see {@link ILocalStorageProvider} for the interface contract
|
|
59
|
+
* @see {@link InMemoryLocalStorageProvider} for the default in-memory implementation
|
|
60
|
+
*/
|
|
61
|
+
private _localStorageProvider;
|
|
62
|
+
/**
|
|
63
|
+
* Returns the active local storage provider, lazily creating an
|
|
64
|
+
* {@link InMemoryLocalStorageProvider} if none has been set.
|
|
65
|
+
*
|
|
66
|
+
* This fulfills the abstract `LocalStorageProvider` requirement from
|
|
67
|
+
* {@link ProviderBase} and is shared by all database providers
|
|
68
|
+
* (SQL Server, PostgreSQL, and any future platforms).
|
|
69
|
+
*/
|
|
70
|
+
get LocalStorageProvider(): ILocalStorageProvider;
|
|
71
|
+
/**
|
|
72
|
+
* Replaces the active local storage provider at runtime.
|
|
73
|
+
*
|
|
74
|
+
* Use this to swap from the default in-memory provider to a Redis-backed
|
|
75
|
+
* provider (or any other {@link ILocalStorageProvider}) after reading
|
|
76
|
+
* application configuration.
|
|
77
|
+
*
|
|
78
|
+
* @param provider - The new storage provider to use for all caching operations.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* import { RedisLocalStorageProvider } from '@memberjunction/redis-provider';
|
|
83
|
+
*
|
|
84
|
+
* // During server startup, after config is loaded:
|
|
85
|
+
* const redis = new RedisLocalStorageProvider({
|
|
86
|
+
* url: process.env.REDIS_URL,
|
|
87
|
+
* defaultTTLSeconds: 300
|
|
88
|
+
* });
|
|
89
|
+
* (Metadata.Provider as GenericDatabaseProvider).SetLocalStorageProvider(redis);
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
SetLocalStorageProvider(provider: ILocalStorageProvider): void;
|
|
43
93
|
/**************************************************************************/
|
|
44
94
|
/**************************************************************************/
|
|
45
95
|
private static _sqlLoggingSessionsKey;
|
|
@@ -323,6 +373,21 @@ export declare abstract class GenericDatabaseProvider extends DatabaseProviderBa
|
|
|
323
373
|
* Runs a full view query and returns results with cache metadata.
|
|
324
374
|
*/
|
|
325
375
|
protected runFullQueryAndReturn<T = unknown>(params: RunViewParams, viewIndex: number, contextUser?: UserInfo): Promise<RunViewWithCacheCheckResult<T>>;
|
|
376
|
+
/**
|
|
377
|
+
* Runs a full query and stores the result in the server's LocalCacheManager.
|
|
378
|
+
* Used by RunViewsWithCacheCheck to populate the server cache for future requests.
|
|
379
|
+
*/
|
|
380
|
+
protected runFullQueryAndCacheResult<T = unknown>(params: RunViewParams, viewIndex: number, contextUser?: UserInfo): Promise<RunViewWithCacheCheckResult<T>>;
|
|
381
|
+
/**
|
|
382
|
+
* Checks the server's LocalCacheManager for cached data matching the client's request.
|
|
383
|
+
* Returns the resolution if found (either 'current' or server-cached data to serve),
|
|
384
|
+
* or null if the server cache doesn't have this data.
|
|
385
|
+
*/
|
|
386
|
+
private resolveFromServerCache;
|
|
387
|
+
/**
|
|
388
|
+
* Packages server-cached data as a RunViewWithCacheCheckResult for return to the client.
|
|
389
|
+
*/
|
|
390
|
+
private serveFromServerCache;
|
|
326
391
|
/**
|
|
327
392
|
* Runs a differential query and returns only changes since the client's cached state.
|
|
328
393
|
* Includes updated/created rows and deleted record IDs.
|
|
@@ -360,6 +425,17 @@ export declare abstract class GenericDatabaseProvider extends DatabaseProviderBa
|
|
|
360
425
|
* Searches QueryEngine for a fresh query entity.
|
|
361
426
|
*/
|
|
362
427
|
protected findQueryInEngine(QueryID: string | undefined, QueryName: string | undefined, CategoryID: string | undefined, CategoryPath: string | undefined): MJQueryEntity | null;
|
|
428
|
+
/**
|
|
429
|
+
* Validates that a query can be executed by the given user. Checks both permissions
|
|
430
|
+
* and approval status. Permission failures throw an error. Non-approved status
|
|
431
|
+
* emits a console warning but allows execution to proceed, enabling query testing
|
|
432
|
+
* before formal approval.
|
|
433
|
+
*
|
|
434
|
+
* @param query - The resolved QueryInfo to validate
|
|
435
|
+
* @param contextUser - The user attempting to execute the query
|
|
436
|
+
* @throws Error if the user does not have permission to run the query
|
|
437
|
+
*/
|
|
438
|
+
protected ValidateQueryForExecution(query: QueryInfo, contextUser?: UserInfo): void;
|
|
363
439
|
/**
|
|
364
440
|
* Creates a fresh QueryInfo from a MJQueryEntity and patches the ProviderBase cache.
|
|
365
441
|
*/
|
|
@@ -395,6 +471,24 @@ export declare abstract class GenericDatabaseProvider extends DatabaseProviderBa
|
|
|
395
471
|
Load(entity: BaseEntity, compositeKey: CompositeKey, entityRelationshipsToLoad: string[] | null | undefined, user: UserInfo): Promise<Record<string, unknown> | null>;
|
|
396
472
|
/**************************************************************************/
|
|
397
473
|
/**************************************************************************/
|
|
474
|
+
/**
|
|
475
|
+
* Checks whether an existing record passes the RLS filter for a given permission type.
|
|
476
|
+
* Executes: SELECT COUNT(*) AS cnt FROM view WHERE PK=value AND (RLS filter)
|
|
477
|
+
* Returns true if the record matches (cnt > 0), false otherwise.
|
|
478
|
+
*/
|
|
479
|
+
protected CheckRecordRLS(entity: BaseEntity, user: UserInfo, type: EntityPermissionType): Promise<boolean>;
|
|
480
|
+
/**
|
|
481
|
+
* Checks whether a new record's field values pass the Create RLS filter.
|
|
482
|
+
* Builds a synthetic single-row subquery from entity field values, then tests the RLS filter against it.
|
|
483
|
+
*/
|
|
484
|
+
protected CheckCreateRLS(entity: BaseEntity, user: UserInfo): Promise<boolean>;
|
|
485
|
+
/**
|
|
486
|
+
* Builds field projections for the Create RLS synthetic row subquery.
|
|
487
|
+
* Only includes non-virtual fields that have non-null values.
|
|
488
|
+
*/
|
|
489
|
+
private BuildCreateRLSProjections;
|
|
490
|
+
/**************************************************************************/
|
|
491
|
+
/**************************************************************************/
|
|
398
492
|
/**
|
|
399
493
|
* Builds a parameter placeholder for parameterized queries.
|
|
400
494
|
* Default: PG-style ($1, $2, ...). SQL Server overrides to @p0, @p1, etc.
|
|
@@ -422,5 +516,24 @@ export declare abstract class GenericDatabaseProvider extends DatabaseProviderBa
|
|
|
422
516
|
* Returns null if columns are invalid.
|
|
423
517
|
*/
|
|
424
518
|
protected getColumnsForDatasetItem(item: Record<string, unknown>, datasetName: string): string | null;
|
|
519
|
+
/**************************************************************************/
|
|
520
|
+
/**************************************************************************/
|
|
521
|
+
/**
|
|
522
|
+
* Computes the latest update date for a dataset item from its result rows and dataset metadata.
|
|
523
|
+
* Used by both the cache-hit and cache-miss paths in GetDatasetByName.
|
|
524
|
+
* @param rows - The result rows (from cache or SQL)
|
|
525
|
+
* @param dateFieldToCheck - The field name to scan for latest date
|
|
526
|
+
* @param item - The dataset item metadata row (contains DatasetItemUpdatedAt, DatasetUpdatedAt)
|
|
527
|
+
* @returns The latest date across all rows and dataset metadata
|
|
528
|
+
*/
|
|
529
|
+
protected computeLatestUpdateDate(rows: unknown[], dateFieldToCheck: string, item: Record<string, unknown>): Date;
|
|
530
|
+
/**
|
|
531
|
+
* Extracts the MAX value of a specified date field from result rows as an ISO string.
|
|
532
|
+
* Used for write-through caching of dataset item results.
|
|
533
|
+
* @param rows - The result rows
|
|
534
|
+
* @param dateFieldToCheck - The field name to scan
|
|
535
|
+
* @returns ISO string of the max date, or current time if no dates found
|
|
536
|
+
*/
|
|
537
|
+
protected extractMaxUpdatedAtFromRows(rows: unknown[], dateFieldToCheck: string): string;
|
|
425
538
|
}
|
|
426
539
|
//# sourceMappingURL=GenericDatabaseProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericDatabaseProvider.d.ts","sourceRoot":"","sources":["../src/GenericDatabaseProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACH,UAAU,EACV,oBAAoB,EACpB,UAAU,EACV,eAAe,EAEf,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"GenericDatabaseProvider.d.ts","sourceRoot":"","sources":["../src/GenericDatabaseProvider.ts"],"names":[],"mappings":"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"}
|