@venizia/ignis-kernel 0.2.0-7 → 0.2.0-9
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/dist/cjs/base/events/event-bus.d.ts +1 -1
- package/dist/cjs/base/events/event-bus.js +2 -2
- package/dist/cjs/base/events/event-bus.js.map +1 -1
- package/dist/cjs/base/metadata/persistents.js +1 -1
- package/dist/cjs/base/metadata/persistents.js.map +1 -1
- package/dist/cjs/base/repositories/common/constants.d.ts +26 -0
- package/dist/cjs/base/repositories/common/constants.d.ts.map +1 -1
- package/dist/cjs/base/repositories/common/constants.js +29 -1
- package/dist/cjs/base/repositories/common/constants.js.map +1 -1
- package/dist/cjs/base/repositories/core/abstract.d.ts.map +1 -1
- package/dist/cjs/base/repositories/core/abstract.js +1 -1
- package/dist/cjs/base/repositories/core/abstract.js.map +1 -1
- package/dist/cjs/base/repositories/index.d.ts +1 -0
- package/dist/cjs/base/repositories/index.d.ts.map +1 -1
- package/dist/cjs/base/repositories/index.js +1 -0
- package/dist/cjs/base/repositories/index.js.map +1 -1
- package/dist/cjs/base/repositories/sqls/index.d.ts +2 -0
- package/dist/cjs/base/repositories/sqls/index.d.ts.map +1 -0
- package/dist/cjs/base/repositories/sqls/index.js +18 -0
- package/dist/cjs/base/repositories/sqls/index.js.map +1 -0
- package/dist/cjs/base/repositories/sqls/recursive-tree.d.ts +56 -0
- package/dist/cjs/base/repositories/sqls/recursive-tree.d.ts.map +1 -0
- package/dist/cjs/base/repositories/sqls/recursive-tree.js +148 -0
- package/dist/cjs/base/repositories/sqls/recursive-tree.js.map +1 -0
- package/dist/cjs/helpers/inversion/common/types.d.ts +34 -4
- package/dist/cjs/helpers/inversion/common/types.d.ts.map +1 -1
- package/dist/esm/base/events/event-bus.d.ts +1 -1
- package/dist/esm/base/events/event-bus.js +3 -3
- package/dist/esm/base/events/event-bus.js.map +1 -1
- package/dist/esm/base/metadata/persistents.js +1 -1
- package/dist/esm/base/metadata/persistents.js.map +1 -1
- package/dist/esm/base/repositories/common/constants.d.ts +26 -0
- package/dist/esm/base/repositories/common/constants.d.ts.map +1 -1
- package/dist/esm/base/repositories/common/constants.js +26 -0
- package/dist/esm/base/repositories/common/constants.js.map +1 -1
- package/dist/esm/base/repositories/core/abstract.d.ts.map +1 -1
- package/dist/esm/base/repositories/core/abstract.js +2 -2
- package/dist/esm/base/repositories/core/abstract.js.map +1 -1
- package/dist/esm/base/repositories/index.d.ts +1 -0
- package/dist/esm/base/repositories/index.d.ts.map +1 -1
- package/dist/esm/base/repositories/index.js +1 -0
- package/dist/esm/base/repositories/index.js.map +1 -1
- package/dist/esm/base/repositories/sqls/index.d.ts +2 -0
- package/dist/esm/base/repositories/sqls/index.d.ts.map +1 -0
- package/dist/esm/base/repositories/sqls/index.js +2 -0
- package/dist/esm/base/repositories/sqls/index.js.map +1 -0
- package/dist/esm/base/repositories/sqls/recursive-tree.d.ts +56 -0
- package/dist/esm/base/repositories/sqls/recursive-tree.d.ts.map +1 -0
- package/dist/esm/base/repositories/sqls/recursive-tree.js +143 -0
- package/dist/esm/base/repositories/sqls/recursive-tree.js.map +1 -0
- package/dist/esm/helpers/inversion/common/types.d.ts +34 -4
- package/dist/esm/helpers/inversion/common/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -32,7 +32,7 @@ export declare class EventBus<TPayloadMap extends object> extends BaseHelper {
|
|
|
32
32
|
* handler is resolved fresh from the container on every attempt rather than once up front, so a
|
|
33
33
|
* rebind takes effect on the very next attempt of a dispatch already in flight.
|
|
34
34
|
*
|
|
35
|
-
* `executeWithRetry` is used without its own `logger` - its internal per-attempt/exhaustion
|
|
35
|
+
* `RetryHelper.executeWithRetry` is used without its own `logger` - its internal per-attempt/exhaustion
|
|
36
36
|
* logging knows nothing about the event name or `traceId`, so it cannot be the trace anyone
|
|
37
37
|
* relies on. The one line below, logged only on final failure, is.
|
|
38
38
|
*/
|
|
@@ -66,7 +66,7 @@ class EventBus extends core_1.BaseHelper {
|
|
|
66
66
|
* handler is resolved fresh from the container on every attempt rather than once up front, so a
|
|
67
67
|
* rebind takes effect on the very next attempt of a dispatch already in flight.
|
|
68
68
|
*
|
|
69
|
-
* `executeWithRetry` is used without its own `logger` - its internal per-attempt/exhaustion
|
|
69
|
+
* `RetryHelper.executeWithRetry` is used without its own `logger` - its internal per-attempt/exhaustion
|
|
70
70
|
* logging knows nothing about the event name or `traceId`, so it cannot be the trace anyone
|
|
71
71
|
* relies on. The one line below, logged only on final failure, is.
|
|
72
72
|
*/
|
|
@@ -74,7 +74,7 @@ class EventBus extends core_1.BaseHelper {
|
|
|
74
74
|
const { event, handlerBindingKey } = opts;
|
|
75
75
|
let lastAttempt = 0;
|
|
76
76
|
try {
|
|
77
|
-
await
|
|
77
|
+
await core_1.RetryHelper.executeWithRetry({
|
|
78
78
|
operation: `EventBus.dispatch:${event.name}`,
|
|
79
79
|
maxAttempts: constants_1.EventDispatchRetry.MAX_ATTEMPTS,
|
|
80
80
|
backoff: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../../src/base/events/event-bus.ts"],"names":[],"mappings":";;;;;;AACA,sDAMqC;AACrC,6DAAqC;AACrC,kDAAwD;AAGxD;;;sEAGsE;AACtE,MAAa,QAAqC,SAAQ,iBAAU;IAOlE,YAAY,IAA8C;QACxD,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,QAAQ,CAAuC,IAG9C;QACC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QAEzC,IAAI,IAAA,iBAAO,EAAC,IAAI,CAAC,IAAI,IAAA,iBAAO,EAAC,iBAAiB,CAAC,EAAE,CAAC;YAChD,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,qDAAqD,MAAM,CAAC,IAAI,CAAC,yBAAyB,iBAAiB,EAAE;aACvH,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAuC,IAI7C;QACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAExC,MAAM,KAAK,GAAiC;YAC1C,IAAI;YACJ,OAAO;YACP,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO;SACR,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;YAChC,6FAA6F;YAC7F,gEAAgE;YAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QAED,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;YACnD,cAAc,CAAC,GAAG,EAAE;gBAClB,uFAAuF;gBACvF,2FAA2F;gBAC3F,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,8DAA8D,EAC9D,KAAK,CAAC,IAAI,EACV,KAAK,CACN,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,QAAQ,CAAC,IAGtB;QACC,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QAC1C,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../../src/base/events/event-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.repository = exports.datasource = exports.model = void 0;
|
|
4
4
|
const bindings_1 = require("../../common/bindings");
|
|
5
5
|
const inversion_1 = require("../../helpers/inversion");
|
|
6
|
-
const core_1 = require("@venizia/ignis-helpers/core");
|
|
7
6
|
const common_1 = require("@venizia/ignis-helpers/common");
|
|
7
|
+
const core_1 = require("@venizia/ignis-helpers/core");
|
|
8
8
|
const datasources_1 = require("../datasources");
|
|
9
9
|
/** Registers a model class with its static schema and relations. */
|
|
10
10
|
const model = (metadata) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistents.js","sourceRoot":"","sources":["../../../../src/base/metadata/persistents.ts"],"names":[],"mappings":";;;AAAA,gDAAsD;AAQtD,mDAAkF;AAClF,
|
|
1
|
+
{"version":3,"file":"persistents.js","sourceRoot":"","sources":["../../../../src/base/metadata/persistents.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,32 @@ export declare class RepositoryOperationScopes {
|
|
|
23
23
|
}
|
|
24
24
|
/** Valid repository operation scope values. */
|
|
25
25
|
export type TRepositoryOperationScope = TConstValue<typeof RepositoryOperationScopes>;
|
|
26
|
+
/** What a row-scope filter (`@model` settings.scopeFilter) does when `resolve()` returns null/undefined. */
|
|
27
|
+
export declare class ScopeFilterMissingBehaviors {
|
|
28
|
+
/** An unresolved scope matches ZERO rows - the safe reading of "caller's scope is unknown". */
|
|
29
|
+
static readonly DENY = "deny";
|
|
30
|
+
/** Explicit opt-out: no scope is applied. For migrations and background jobs, never inferred from a request. */
|
|
31
|
+
static readonly ALLOW = "allow";
|
|
32
|
+
static readonly SCHEME_SET: Set<string>;
|
|
33
|
+
static isValid(behavior: string): boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Valid scope-filter missing-behavior values. */
|
|
36
|
+
export type TScopeFilterMissingBehavior = TConstValue<typeof ScopeFilterMissingBehaviors>;
|
|
37
|
+
/**
|
|
38
|
+
* The third `resolve()` state, beside a `where` and `deny`-by-default null/undefined: unrestricted
|
|
39
|
+
* for THIS call. `onMissing: 'allow'` cannot express it - `onMissing` lives on the model's static
|
|
40
|
+
* settings, so using it for a per-user bypass (an internal operator) would also unscope every
|
|
41
|
+
* ordinary user whose `resolve()` happens to return nothing.
|
|
42
|
+
*/
|
|
43
|
+
export declare class ScopeFilters {
|
|
44
|
+
/**
|
|
45
|
+
* Return from `resolve()` to apply NO scope for this request - a caller the application has
|
|
46
|
+
* decided sees everything. Deliberately a symbol: forgetting to return must land in deny, and no
|
|
47
|
+
* JSON body, query string, or header can ever produce this value. `Symbol.for` so two installed
|
|
48
|
+
* copies of this package agree on identity, same as `DATA_SOURCE_BRAND`.
|
|
49
|
+
*/
|
|
50
|
+
static readonly UNRESTRICTED: unique symbol;
|
|
51
|
+
}
|
|
26
52
|
/** Machine-readable codes for repository-level failures, in the dotted namespace core already uses (`core.not_supported`, `core.search_engine.*`) - a client maps the code, never the message. */
|
|
27
53
|
export declare class RepositoryErrorCodes {
|
|
28
54
|
/** A verb the repository's `operationScope` does not permit (e.g. `create()` on a READ_ONLY one). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,uDAAuD;AACvD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,gGAAgG;AAChG,qBAAa,yBAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA+D;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,+CAA+C;AAC/C,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEtF,kMAAkM;AAClM,qBAAa,oBAAoB;IAC/B,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;CACJ;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E,mEAAmE;AACnE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAkC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,yEAAyE;AACzE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAKvB;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,uDAAuD;AACvD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,gGAAgG;AAChG,qBAAa,yBAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA+D;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,+CAA+C;AAC/C,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEtF,4GAA4G;AAC5G,qBAAa,2BAA2B;IACtC,+FAA+F;IAC/F,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,gHAAgH;IAChH,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kDAAkD;AAClD,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE1F;;;;;GAKG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,gBAAiE;CAC9F;AAED,kMAAkM;AAClM,qBAAa,oBAAoB;IAC/B,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;CACJ;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E,mEAAmE;AACnE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAkC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,yEAAyE;AACzE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAKvB;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LockStrengths = exports.RelationTypes = exports.RepositoryErrorCodes = exports.RepositoryOperationScopes = exports.DEFAULT_MAX_LIMIT = exports.DEFAULT_LIMIT = void 0;
|
|
3
|
+
exports.LockStrengths = exports.RelationTypes = exports.RepositoryErrorCodes = exports.ScopeFilters = exports.ScopeFilterMissingBehaviors = exports.RepositoryOperationScopes = exports.DEFAULT_MAX_LIMIT = exports.DEFAULT_LIMIT = void 0;
|
|
4
4
|
const core_1 = require("@venizia/ignis-helpers/core");
|
|
5
5
|
/** Default pagination limit for repository queries. */
|
|
6
6
|
exports.DEFAULT_LIMIT = 10;
|
|
@@ -27,6 +27,34 @@ class RepositoryOperationScopes {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
exports.RepositoryOperationScopes = RepositoryOperationScopes;
|
|
30
|
+
/** What a row-scope filter (`@model` settings.scopeFilter) does when `resolve()` returns null/undefined. */
|
|
31
|
+
class ScopeFilterMissingBehaviors {
|
|
32
|
+
/** An unresolved scope matches ZERO rows - the safe reading of "caller's scope is unknown". */
|
|
33
|
+
static { this.DENY = 'deny'; }
|
|
34
|
+
/** Explicit opt-out: no scope is applied. For migrations and background jobs, never inferred from a request. */
|
|
35
|
+
static { this.ALLOW = 'allow'; }
|
|
36
|
+
static { this.SCHEME_SET = new Set([this.DENY, this.ALLOW]); }
|
|
37
|
+
static isValid(behavior) {
|
|
38
|
+
return this.SCHEME_SET.has(behavior);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.ScopeFilterMissingBehaviors = ScopeFilterMissingBehaviors;
|
|
42
|
+
/**
|
|
43
|
+
* The third `resolve()` state, beside a `where` and `deny`-by-default null/undefined: unrestricted
|
|
44
|
+
* for THIS call. `onMissing: 'allow'` cannot express it - `onMissing` lives on the model's static
|
|
45
|
+
* settings, so using it for a per-user bypass (an internal operator) would also unscope every
|
|
46
|
+
* ordinary user whose `resolve()` happens to return nothing.
|
|
47
|
+
*/
|
|
48
|
+
class ScopeFilters {
|
|
49
|
+
/**
|
|
50
|
+
* Return from `resolve()` to apply NO scope for this request - a caller the application has
|
|
51
|
+
* decided sees everything. Deliberately a symbol: forgetting to return must land in deny, and no
|
|
52
|
+
* JSON body, query string, or header can ever produce this value. `Symbol.for` so two installed
|
|
53
|
+
* copies of this package agree on identity, same as `DATA_SOURCE_BRAND`.
|
|
54
|
+
*/
|
|
55
|
+
static { this.UNRESTRICTED = Symbol.for('@venizia/ignis-kernel:scope-filter-unrestricted'); }
|
|
56
|
+
}
|
|
57
|
+
exports.ScopeFilters = ScopeFilters;
|
|
30
58
|
/** Machine-readable codes for repository-level failures, in the dotted namespace core already uses (`core.not_supported`, `core.search_engine.*`) - a client maps the code, never the message. */
|
|
31
59
|
class RepositoryErrorCodes {
|
|
32
60
|
/** A verb the repository's `operationScope` does not permit (e.g. `create()` on a READ_ONLY one). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":";;;AACA,sDAA0D;AAE1D,uDAAuD;AAC1C,QAAA,aAAa,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,IAAI,CAAC;AAEtC,gGAAgG;AAChG,MAAa,yBAAyB;aACpB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AARH,8DASC;AAKD,kMAAkM;AAClM,MAAa,oBAAoB;IAC/B,qGAAqG;aACrF,0BAAqB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,uBAAuB,CAAC;KACvD,CAAC,CAAC;;AAJL,oDAKC;AAKD,mEAAmE;AACnE,MAAa,aAAa;aACR,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAPH,sCAQC;AAKD,yEAAyE;AACzE,MAAa,aAAa;aACR,WAAM,GAAG,QAAQ,CAAC;aAClB,kBAAa,GAAG,eAAe,CAAC;aAChC,UAAK,GAAG,OAAO,CAAC;aAChB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,SAAS;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AAdH,sCAeC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":";;;AACA,sDAA0D;AAE1D,uDAAuD;AAC1C,QAAA,aAAa,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,IAAI,CAAC;AAEtC,gGAAgG;AAChG,MAAa,yBAAyB;aACpB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AARH,8DASC;AAKD,4GAA4G;AAC5G,MAAa,2BAA2B;IACtC,+FAA+F;aAC/E,SAAI,GAAG,MAAM,CAAC;IAC9B,gHAAgH;aAChG,UAAK,GAAG,OAAO,CAAC;aAChB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AATH,kEAUC;AAKD;;;;;GAKG;AACH,MAAa,YAAY;IACvB;;;;;OAKG;aACa,iBAAY,GAAG,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;;AAP/F,oCAQC;AAED,kMAAkM;AAClM,MAAa,oBAAoB;IAC/B,qGAAqG;aACrF,0BAAqB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,uBAAuB,CAAC;KACvD,CAAC,CAAC;;AAJL,oDAKC;AAKD,mEAAmE;AACnE,MAAa,aAAa;aACR,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAPH,sCAQC;AAKD,yEAAyE;AACzE,MAAa,aAAa;aACR,WAAM,GAAG,QAAQ,CAAC;aAClB,kBAAa,GAAG,eAAe,CAAC;aAChC,UAAK,GAAG,OAAO,CAAC;aAChB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,SAAS;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AAdH,sCAeC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -189,7 +189,7 @@ class AbstractRepository extends core_1.BaseHelper {
|
|
|
189
189
|
return execution();
|
|
190
190
|
}
|
|
191
191
|
const { maxAttempts, maxTotalMs, signal, backoff, until } = options.retry;
|
|
192
|
-
return
|
|
192
|
+
return core_2.RetryHelper.executeWithRetryUntil({
|
|
193
193
|
operation: [this.constructor.name, operation].join('.'),
|
|
194
194
|
execution,
|
|
195
195
|
until: until ?? defaultUntil,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":";;;AAGA,mDAAuD;AAEvD,sDAAmE;AACnE,0DAA6D;AAC7D,
|
|
1
|
+
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
|
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./common"), exports);
|
|
18
18
|
__exportStar(require("./core"), exports);
|
|
19
19
|
__exportStar(require("./query-schemas"), exports);
|
|
20
|
+
__exportStar(require("./sqls"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,kDAAgC;AAChC,yCAAuB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/sqls/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./recursive-tree"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/base/repositories/sqls/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TConstValue } from '@venizia/ignis-helpers/common';
|
|
2
|
+
import type { SQL } from 'drizzle-orm';
|
|
3
|
+
/** Walk direction relative to `rootId`: DOWN follows `parentColumn -> idColumn` (descendants), UP follows the reverse (ancestors). */
|
|
4
|
+
export declare class RecursiveTreeDirections {
|
|
5
|
+
static readonly UP = "UP";
|
|
6
|
+
static readonly DOWN = "DOWN";
|
|
7
|
+
static readonly SCHEME_SET: Set<string>;
|
|
8
|
+
static isValid(direction: string): boolean;
|
|
9
|
+
}
|
|
10
|
+
export type TRecursiveTreeDirection = TConstValue<typeof RecursiveTreeDirections>;
|
|
11
|
+
export interface IRecursiveTreeOptions {
|
|
12
|
+
/** CTE name the caller references in the SELECT it writes around this fragment. */
|
|
13
|
+
name: string;
|
|
14
|
+
/** Runtime-checked with `is(table, Table)`; also the sole dialect selector (Postgres vs SQLite) - see {@link RecursiveTreeSql}. */
|
|
15
|
+
table: unknown;
|
|
16
|
+
rootId: string;
|
|
17
|
+
direction: TRecursiveTreeDirection;
|
|
18
|
+
/**
|
|
19
|
+
* Counts EDGES, not rows: the root is at depth 0, so `N` returns up to `N+1` rows.
|
|
20
|
+
* No default - `0` type-checks but silently produces an empty result, so `walk` throws at
|
|
21
|
+
* runtime for `maxDepth <= 0`.
|
|
22
|
+
*/
|
|
23
|
+
maxDepth: number;
|
|
24
|
+
idColumn?: string;
|
|
25
|
+
parentColumn?: string;
|
|
26
|
+
/** Extra columns, beyond `idColumn`/`parentColumn`, carried into every row of the walk. */
|
|
27
|
+
columns?: string[];
|
|
28
|
+
/** ANDed into the recursive term's WHERE clause - build it with Drizzle's own `sql` tag. */
|
|
29
|
+
recursiveFilter?: SQL;
|
|
30
|
+
/**
|
|
31
|
+
* Emits `path`/`is_cycle` and stops expanding once a row re-visits an id in its own path. Row
|
|
32
|
+
* shape differs per engine and nothing in this signature shows it: Postgres returns a real array
|
|
33
|
+
* and boolean; SQLite returns delimited text and `1`/`0` - so `row.path.length` throws on SQLite
|
|
34
|
+
* and `row.is_cycle === true` is always false there.
|
|
35
|
+
*/
|
|
36
|
+
trackPath?: boolean;
|
|
37
|
+
startDepth?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns the CTE definition only - the caller writes its own `SELECT ... FROM <name>` around it.
|
|
41
|
+
* Engine is read off `table`, never asked of the caller, so no option can disagree with the schema.
|
|
42
|
+
* SQLite's `path` is `char(31)`-delimited text, not an array: exact unless an id contains that byte,
|
|
43
|
+
* which this class does not reject. Identifiers cannot be parameterized, so `name`/`idColumn`/
|
|
44
|
+
* `parentColumn`/`columns` are allowlist-checked before reaching a template.
|
|
45
|
+
*/
|
|
46
|
+
export declare class RecursiveTreeSql {
|
|
47
|
+
private static assertValidIdentifier;
|
|
48
|
+
static walk(opts: IRecursiveTreeOptions): SQL;
|
|
49
|
+
/** See {@link RecursiveTreeSql} for why there is no separate `engine` option. */
|
|
50
|
+
private static detectEngine;
|
|
51
|
+
/** Postgres needs an explicit cast so the base and recursive terms agree on the `depth` column's type; SQLite's looser typing does not, but casts anyway for parity and to fail loudly on a non-numeric `startDepth`. */
|
|
52
|
+
private static compileDepthCast;
|
|
53
|
+
/** See {@link RecursiveTreeSql} for why Postgres and SQLite need different `path`/`is_cycle` shapes. */
|
|
54
|
+
private static compileCycleGuardFragments;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=recursive-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursive-tree.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/sqls/recursive-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAQ,GAAG,EAAE,MAAM,aAAa,CAAC;AAK7C,sIAAsI;AACtI,qBAAa,uBAAuB;IAClC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAiC;IAE3D,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG3C;AAED,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAoBlF,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IAEb,mIAAmI;IACnI,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,uBAAuB,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,4FAA4F;IAC5F,eAAe,CAAC,EAAE,GAAG,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAUpC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,GAAG,GAAG;IAgF7C,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAC,YAAY;IAc3B,yNAAyN;IACzN,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkB/B,wGAAwG;IACxG,OAAO,CAAC,MAAM,CAAC,0BAA0B;CA0B1C"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RecursiveTreeSql = exports.RecursiveTreeDirections = void 0;
|
|
4
|
+
const core_1 = require("@venizia/ignis-helpers/core");
|
|
5
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
6
|
+
const pg_core_1 = require("drizzle-orm/pg-core");
|
|
7
|
+
const sqlite_core_1 = require("drizzle-orm/sqlite-core");
|
|
8
|
+
/** Walk direction relative to `rootId`: DOWN follows `parentColumn -> idColumn` (descendants), UP follows the reverse (ancestors). */
|
|
9
|
+
class RecursiveTreeDirections {
|
|
10
|
+
static { this.UP = 'UP'; }
|
|
11
|
+
static { this.DOWN = 'DOWN'; }
|
|
12
|
+
static { this.SCHEME_SET = new Set([this.UP, this.DOWN]); }
|
|
13
|
+
static isValid(direction) {
|
|
14
|
+
return this.SCHEME_SET.has(direction);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.RecursiveTreeDirections = RecursiveTreeDirections;
|
|
18
|
+
/** Internal only - not part of {@link IRecursiveTreeOptions}. Derived from `table`, never accepted as an option. */
|
|
19
|
+
class RecursiveTreeEngines {
|
|
20
|
+
static { this.POSTGRES = 'POSTGRES'; }
|
|
21
|
+
static { this.SQLITE = 'SQLITE'; }
|
|
22
|
+
static { this.SCHEME_SET = new Set([this.POSTGRES, this.SQLITE]); }
|
|
23
|
+
}
|
|
24
|
+
/** A SQL identifier is safe to splice only after it matches this allowlist - see {@link RecursiveTreeSql.assertValidIdentifier}. */
|
|
25
|
+
const IDENTIFIER_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
26
|
+
/**
|
|
27
|
+
* ASCII Unit Separator (0x1F) - chosen because it does not occur in real ids, unlike `/` or `,`.
|
|
28
|
+
* See {@link RecursiveTreeSql} for the exactness limitation this relies on.
|
|
29
|
+
*/
|
|
30
|
+
const SQLITE_PATH_DELIMITER = drizzle_orm_1.sql.raw('char(31)');
|
|
31
|
+
/**
|
|
32
|
+
* Returns the CTE definition only - the caller writes its own `SELECT ... FROM <name>` around it.
|
|
33
|
+
* Engine is read off `table`, never asked of the caller, so no option can disagree with the schema.
|
|
34
|
+
* SQLite's `path` is `char(31)`-delimited text, not an array: exact unless an id contains that byte,
|
|
35
|
+
* which this class does not reject. Identifiers cannot be parameterized, so `name`/`idColumn`/
|
|
36
|
+
* `parentColumn`/`columns` are allowlist-checked before reaching a template.
|
|
37
|
+
*/
|
|
38
|
+
class RecursiveTreeSql {
|
|
39
|
+
static assertValidIdentifier(opts) {
|
|
40
|
+
const { field, value } = opts;
|
|
41
|
+
if (!IDENTIFIER_PATTERN.test(value)) {
|
|
42
|
+
throw (0, core_1.getError)({
|
|
43
|
+
message: `[RecursiveTreeSql.walk] Invalid '${field}' | Expected letters, digits and underscores only, not starting with a digit | Got: ${value}`,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static walk(opts) {
|
|
48
|
+
const { name, table, rootId, direction, maxDepth, idColumn = 'id', parentColumn = 'parent_id', columns = [], recursiveFilter, trackPath = false, startDepth = 0, } = opts;
|
|
49
|
+
RecursiveTreeSql.assertValidIdentifier({ field: 'name', value: name });
|
|
50
|
+
RecursiveTreeSql.assertValidIdentifier({ field: 'idColumn', value: idColumn });
|
|
51
|
+
RecursiveTreeSql.assertValidIdentifier({ field: 'parentColumn', value: parentColumn });
|
|
52
|
+
columns.forEach(column => RecursiveTreeSql.assertValidIdentifier({ field: 'columns', value: column }));
|
|
53
|
+
if (!RecursiveTreeDirections.isValid(direction)) {
|
|
54
|
+
throw (0, core_1.getError)({
|
|
55
|
+
message: `[RecursiveTreeSql.walk] Invalid 'direction' | Expected ${RecursiveTreeDirections.UP} or ${RecursiveTreeDirections.DOWN} | Got: ${direction}`,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (!Number.isInteger(maxDepth) || maxDepth <= 0) {
|
|
59
|
+
throw (0, core_1.getError)({
|
|
60
|
+
message: `[RecursiveTreeSql.walk] Invalid 'maxDepth' | Expected a positive integer | Got: ${maxDepth}`,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (!(0, drizzle_orm_1.is)(table, drizzle_orm_1.Table)) {
|
|
64
|
+
throw (0, core_1.getError)({
|
|
65
|
+
message: `[RecursiveTreeSql.walk] Invalid 'table' | Expected a Drizzle table | Got: ${typeof table}`,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const engine = RecursiveTreeSql.detectEngine(table);
|
|
69
|
+
const tableName = (0, drizzle_orm_1.getTableName)(table);
|
|
70
|
+
RecursiveTreeSql.assertValidIdentifier({ field: 'table', value: tableName });
|
|
71
|
+
const tableIdentifier = drizzle_orm_1.sql.identifier(tableName);
|
|
72
|
+
const cteIdentifier = drizzle_orm_1.sql.identifier(name);
|
|
73
|
+
const idIdentifier = drizzle_orm_1.sql.identifier(idColumn);
|
|
74
|
+
const parentIdentifier = drizzle_orm_1.sql.identifier(parentColumn);
|
|
75
|
+
const extraIdentifiers = columns.map(column => drizzle_orm_1.sql.identifier(column));
|
|
76
|
+
const baseColumnList = drizzle_orm_1.sql.join([idIdentifier, parentIdentifier, ...extraIdentifiers], (0, drizzle_orm_1.sql) `, `);
|
|
77
|
+
const recursiveColumnList = drizzle_orm_1.sql.join([idIdentifier, parentIdentifier, ...extraIdentifiers].map(identifier => (0, drizzle_orm_1.sql) `t.${identifier}`), (0, drizzle_orm_1.sql) `, `);
|
|
78
|
+
const depthCast = RecursiveTreeSql.compileDepthCast({ engine, depth: startDepth });
|
|
79
|
+
const { basePathColumns, recursivePathColumns } = trackPath
|
|
80
|
+
? RecursiveTreeSql.compileCycleGuardFragments({ engine, idIdentifier })
|
|
81
|
+
: { basePathColumns: (0, drizzle_orm_1.sql) ``, recursivePathColumns: (0, drizzle_orm_1.sql) `` };
|
|
82
|
+
const baseCase = (0, drizzle_orm_1.sql) `SELECT ${baseColumnList}, ${depthCast} AS depth${basePathColumns} FROM ${tableIdentifier} WHERE ${idIdentifier} = ${rootId}`;
|
|
83
|
+
// DOWN walks parent -> children (t.parentColumn = r.idColumn); UP walks child -> parent (t.idColumn = r.parentColumn).
|
|
84
|
+
const joinCondition = direction === RecursiveTreeDirections.DOWN
|
|
85
|
+
? (0, drizzle_orm_1.sql) `t.${parentIdentifier} = r.${idIdentifier}`
|
|
86
|
+
: (0, drizzle_orm_1.sql) `t.${idIdentifier} = r.${parentIdentifier}`;
|
|
87
|
+
// `NOT r.is_cycle` stops expanding a row already flagged cyclic - the row itself stays in the
|
|
88
|
+
// result set with is_cycle = true, only its own children are cut off.
|
|
89
|
+
const cycleGuard = trackPath ? (0, drizzle_orm_1.sql) ` AND NOT r.is_cycle` : (0, drizzle_orm_1.sql) ``;
|
|
90
|
+
const extraFilter = recursiveFilter ? (0, drizzle_orm_1.sql) ` AND (${recursiveFilter})` : (0, drizzle_orm_1.sql) ``;
|
|
91
|
+
const recursiveCase = (0, drizzle_orm_1.sql) `SELECT ${recursiveColumnList}, r.depth + 1${recursivePathColumns} FROM ${tableIdentifier} t JOIN ${cteIdentifier} r ON ${joinCondition} WHERE r.depth + 1 <= ${maxDepth}${cycleGuard}${extraFilter}`;
|
|
92
|
+
return (0, drizzle_orm_1.sql) `WITH RECURSIVE ${cteIdentifier} AS (${baseCase} UNION ALL ${recursiveCase})`;
|
|
93
|
+
}
|
|
94
|
+
/** See {@link RecursiveTreeSql} for why there is no separate `engine` option. */
|
|
95
|
+
static detectEngine(table) {
|
|
96
|
+
if ((0, drizzle_orm_1.is)(table, pg_core_1.PgTable)) {
|
|
97
|
+
return RecursiveTreeEngines.POSTGRES;
|
|
98
|
+
}
|
|
99
|
+
if ((0, drizzle_orm_1.is)(table, sqlite_core_1.SQLiteTable)) {
|
|
100
|
+
return RecursiveTreeEngines.SQLITE;
|
|
101
|
+
}
|
|
102
|
+
throw (0, core_1.getError)({
|
|
103
|
+
message: `[RecursiveTreeSql.walk] Invalid 'table' | Expected a Postgres or SQLite Drizzle table | Got: ${(0, drizzle_orm_1.getTableName)(table)}`,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/** Postgres needs an explicit cast so the base and recursive terms agree on the `depth` column's type; SQLite's looser typing does not, but casts anyway for parity and to fail loudly on a non-numeric `startDepth`. */
|
|
107
|
+
static compileDepthCast(opts) {
|
|
108
|
+
const { engine, depth } = opts;
|
|
109
|
+
switch (engine) {
|
|
110
|
+
case RecursiveTreeEngines.POSTGRES: {
|
|
111
|
+
return (0, drizzle_orm_1.sql) `${depth}::int`;
|
|
112
|
+
}
|
|
113
|
+
case RecursiveTreeEngines.SQLITE: {
|
|
114
|
+
return (0, drizzle_orm_1.sql) `CAST(${depth} AS INTEGER)`;
|
|
115
|
+
}
|
|
116
|
+
default: {
|
|
117
|
+
throw (0, core_1.getError)({
|
|
118
|
+
message: `[RecursiveTreeSql.walk] Invalid 'engine' | Got: ${engine}`,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** See {@link RecursiveTreeSql} for why Postgres and SQLite need different `path`/`is_cycle` shapes. */
|
|
124
|
+
static compileCycleGuardFragments(opts) {
|
|
125
|
+
const { engine, idIdentifier } = opts;
|
|
126
|
+
switch (engine) {
|
|
127
|
+
case RecursiveTreeEngines.POSTGRES: {
|
|
128
|
+
return {
|
|
129
|
+
basePathColumns: (0, drizzle_orm_1.sql) `, ARRAY[${idIdentifier}] AS path, false AS is_cycle`,
|
|
130
|
+
recursivePathColumns: (0, drizzle_orm_1.sql) `, r.path || t.${idIdentifier} AS path, t.${idIdentifier} = ANY(r.path) AS is_cycle`,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
case RecursiveTreeEngines.SQLITE: {
|
|
134
|
+
return {
|
|
135
|
+
basePathColumns: (0, drizzle_orm_1.sql) `, ${SQLITE_PATH_DELIMITER} || ${idIdentifier} || ${SQLITE_PATH_DELIMITER} AS path, 0 AS is_cycle`,
|
|
136
|
+
recursivePathColumns: (0, drizzle_orm_1.sql) `, r.path || t.${idIdentifier} || ${SQLITE_PATH_DELIMITER} AS path, instr(r.path, ${SQLITE_PATH_DELIMITER} || t.${idIdentifier} || ${SQLITE_PATH_DELIMITER}) > 0 AS is_cycle`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
default: {
|
|
140
|
+
throw (0, core_1.getError)({
|
|
141
|
+
message: `[RecursiveTreeSql.walk] Invalid 'engine' | Got: ${engine}`,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.RecursiveTreeSql = RecursiveTreeSql;
|
|
148
|
+
//# sourceMappingURL=recursive-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursive-tree.js","sourceRoot":"","sources":["../../../../../src/base/repositories/sqls/recursive-tree.ts"],"names":[],"mappings":";;;AACA,sDAAuD;AAEvD,6CAA2D;AAC3D,iDAA8C;AAC9C,yDAAsD;AAEtD,sIAAsI;AACtI,MAAa,uBAAuB;aAClB,OAAE,GAAG,IAAI,CAAC;aACV,SAAI,GAAG,MAAM,CAAC;aACd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,OAAO,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;;AAPH,0DAQC;AAID,oHAAoH;AACpH,MAAM,oBAAoB;aACR,aAAQ,GAAG,UAAU,CAAC;aACtB,WAAM,GAAG,QAAQ,CAAC;aAClB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;;AAKrE,oIAAoI;AACpI,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAEtD;;;GAGG;AACH,MAAM,qBAAqB,GAAG,iBAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAoClD;;;;;;GAMG;AACH,MAAa,gBAAgB;IACnB,MAAM,CAAC,qBAAqB,CAAC,IAAsC;QACzE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAE9B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,oCAAoC,KAAK,uFAAuF,KAAK,EAAE;aACjJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAA2B;QACrC,MAAM,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,YAAY,GAAG,WAAW,EAC1B,OAAO,GAAG,EAAE,EACZ,eAAe,EACf,SAAS,GAAG,KAAK,EACjB,UAAU,GAAG,CAAC,GACf,GAAG,IAAI,CAAC;QAET,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/E,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CACvB,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAC5E,CAAC;QAEF,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,0DAA0D,uBAAuB,CAAC,EAAE,OAAO,uBAAuB,CAAC,IAAI,WAAW,SAAS,EAAE;aACvJ,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,mFAAmF,QAAQ,EAAE;aACvG,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAA,gBAAE,EAAC,KAAK,EAAE,mBAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,6EAA6E,OAAO,KAAK,EAAE;aACrG,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAA,0BAAY,EAAC,KAAK,CAAC,CAAC;QACtC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE7E,MAAM,eAAe,GAAG,iBAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,iBAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,iBAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,iBAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvE,MAAM,cAAc,GAAG,iBAAG,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,EAAE,IAAA,iBAAG,EAAA,IAAI,CAAC,CAAC;QAChG,MAAM,mBAAmB,GAAG,iBAAG,CAAC,IAAI,CAClC,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAA,iBAAG,EAAA,KAAK,UAAU,EAAE,CAAC,EAC7F,IAAA,iBAAG,EAAA,IAAI,CACR,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACnF,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,SAAS;YACzD,CAAC,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YACvE,CAAC,CAAC,EAAE,eAAe,EAAE,IAAA,iBAAG,EAAA,EAAE,EAAE,oBAAoB,EAAE,IAAA,iBAAG,EAAA,EAAE,EAAE,CAAC;QAE5D,MAAM,QAAQ,GAAG,IAAA,iBAAG,EAAA,UAAU,cAAc,KAAK,SAAS,YAAY,eAAe,SAAS,eAAe,UAAU,YAAY,MAAM,MAAM,EAAE,CAAC;QAElJ,uHAAuH;QACvH,MAAM,aAAa,GACjB,SAAS,KAAK,uBAAuB,CAAC,IAAI;YACxC,CAAC,CAAC,IAAA,iBAAG,EAAA,KAAK,gBAAgB,QAAQ,YAAY,EAAE;YAChD,CAAC,CAAC,IAAA,iBAAG,EAAA,KAAK,YAAY,QAAQ,gBAAgB,EAAE,CAAC;QAErD,8FAA8F;QAC9F,sEAAsE;QACtE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAA,qBAAqB,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAA,EAAE,CAAC;QAChE,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAA,SAAS,eAAe,GAAG,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAA,EAAE,CAAC;QAE7E,MAAM,aAAa,GAAG,IAAA,iBAAG,EAAA,UAAU,mBAAmB,gBAAgB,oBAAoB,SAAS,eAAe,WAAW,aAAa,SAAS,aAAa,yBAAyB,QAAQ,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC;QAE/N,OAAO,IAAA,iBAAG,EAAA,kBAAkB,aAAa,QAAQ,QAAQ,cAAc,aAAa,GAAG,CAAC;IAC1F,CAAC;IAED,iFAAiF;IACzE,MAAM,CAAC,YAAY,CAAC,KAAY;QACtC,IAAI,IAAA,gBAAE,EAAC,KAAK,EAAE,iBAAO,CAAC,EAAE,CAAC;YACvB,OAAO,oBAAoB,CAAC,QAAQ,CAAC;QACvC,CAAC;QAED,IAAI,IAAA,gBAAE,EAAC,KAAK,EAAE,yBAAW,CAAC,EAAE,CAAC;YAC3B,OAAO,oBAAoB,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,MAAM,IAAA,eAAQ,EAAC;YACb,OAAO,EAAE,gGAAgG,IAAA,0BAAY,EAAC,KAAK,CAAC,EAAE;SAC/H,CAAC,CAAC;IACL,CAAC;IAED,yNAAyN;IACjN,MAAM,CAAC,gBAAgB,CAAC,IAAqD;QACnF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAE/B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnC,OAAO,IAAA,iBAAG,EAAA,GAAG,KAAK,OAAO,CAAC;YAC5B,CAAC;YACD,KAAK,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjC,OAAO,IAAA,iBAAG,EAAA,QAAQ,KAAK,cAAc,CAAC;YACxC,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAA,eAAQ,EAAC;oBACb,OAAO,EAAE,mDAAmD,MAAM,EAAE;iBACrE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,wGAAwG;IAChG,MAAM,CAAC,0BAA0B,CAAC,IAGzC;QACC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAEtC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnC,OAAO;oBACL,eAAe,EAAE,IAAA,iBAAG,EAAA,WAAW,YAAY,8BAA8B;oBACzE,oBAAoB,EAAE,IAAA,iBAAG,EAAA,iBAAiB,YAAY,eAAe,YAAY,4BAA4B;iBAC9G,CAAC;YACJ,CAAC;YACD,KAAK,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjC,OAAO;oBACL,eAAe,EAAE,IAAA,iBAAG,EAAA,KAAK,qBAAqB,OAAO,YAAY,OAAO,qBAAqB,yBAAyB;oBACtH,oBAAoB,EAAE,IAAA,iBAAG,EAAA,iBAAiB,YAAY,OAAO,qBAAqB,2BAA2B,qBAAqB,SAAS,YAAY,OAAO,qBAAqB,mBAAmB;iBACvM,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAA,eAAQ,EAAC;oBACb,OAAO,EAAE,mDAAmD,MAAM,EAAE;iBACrE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAxJD,4CAwJC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import type { TAuthMode, TAuthStrategy } from '../../../base/auth/authenticate/common';
|
|
2
|
+
import type { IAuthorizationSpec } from '../../../base/auth/authorize/common/types';
|
|
1
3
|
import type { ControllerTransports } from '../../../base/controllers/common/constants';
|
|
2
4
|
import type { IDataSource, TDataSourceDriverClass } from '../../../base/datasources';
|
|
3
5
|
import type { AbstractEntity } from '../../../base/models';
|
|
4
|
-
import type { IRepository, TFilter, TRepositoryOperationScope } from '../../../base/repositories';
|
|
5
|
-
import type {
|
|
6
|
-
import type { IAuthorizationSpec } from '../../../base/auth/authorize/common/types';
|
|
7
|
-
import type { TClass, TGrpcMethod, TValueOrResolver } from '@venizia/ignis-helpers/common';
|
|
6
|
+
import type { IRepository, ScopeFilters, TFilter, TRepositoryOperationScope, TScopeFilterMissingBehavior, TWhere } from '../../../base/repositories';
|
|
7
|
+
import type { TClass, TGrpcMethod, TNullable, TValueOrResolver } from '@venizia/ignis-helpers/common';
|
|
8
8
|
import { type IInjectMetadata as _IInjectMetadata, type IPropertyMetadata as _IPropertyMetadata } from '@venizia/ignis-inversion';
|
|
9
9
|
interface IBaseControllerMetadata {
|
|
10
10
|
path: string;
|
|
@@ -44,11 +44,41 @@ export interface IModelAuthorizeSettings {
|
|
|
44
44
|
/** Extensible - consumers can add any extra authorization metadata. */
|
|
45
45
|
[extra: string | symbol]: any;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Row-scope resolver for `@model` settings.scopeFilter - resolved per query, so it can depend on
|
|
49
|
+
* the current request (tenant, org, membership). Framework-internal escape hatches aside, nothing
|
|
50
|
+
* short of removing this setting from the model turns scoping off.
|
|
51
|
+
*/
|
|
52
|
+
export interface IScopeFilterSettings {
|
|
53
|
+
/**
|
|
54
|
+
* Returns the scope `where`; `ScopeFilters.UNRESTRICTED` to apply no scope for THIS call (an
|
|
55
|
+
* internal operator, a caller the application has decided sees everything); or null/undefined
|
|
56
|
+
* when this caller's scope cannot be determined at all.
|
|
57
|
+
*/
|
|
58
|
+
resolve: () => TNullable<TWhere> | typeof ScopeFilters.UNRESTRICTED;
|
|
59
|
+
/**
|
|
60
|
+
* What `applyScopeFilter` does when `resolve()` returns null/undefined - no request context, no
|
|
61
|
+
* tenant, a background job. Defaults to `deny`: an unresolved scope matches zero rows, never
|
|
62
|
+
* every row. `allow` is an explicit, reviewed opt-out for migrations and background jobs, declared
|
|
63
|
+
* per MODEL - it cannot express a per-USER bypass; use `ScopeFilters.UNRESTRICTED` for that.
|
|
64
|
+
*/
|
|
65
|
+
onMissing?: TScopeFilterMissingBehavior;
|
|
66
|
+
}
|
|
47
67
|
export interface IModelSettings {
|
|
48
68
|
/** Properties excluded from all query results at SQL level. */
|
|
49
69
|
hiddenProperties?: string[];
|
|
50
70
|
/** Default filter auto-applied to all repository operations. Bypassable via shouldSkipDefaultFilter. */
|
|
51
71
|
defaultFilter?: TFilter;
|
|
72
|
+
/**
|
|
73
|
+
* Row scope: ANDed into every read and write whose scope is expressible as a filter clause, and
|
|
74
|
+
* NOT removable by `shouldSkipDefaultFilter`. Resolved per query, so it can depend on the current
|
|
75
|
+
* request. Ownership resolved per row or through a polymorphic reference is NOT expressible here -
|
|
76
|
+
* that check is still the application's to perform.
|
|
77
|
+
*
|
|
78
|
+
* Relational repositories only - a search-backed model (Typesense, Meilisearch) never reads
|
|
79
|
+
* this setting, so mirroring a scoped entity into a search index needs its own query-time scope.
|
|
80
|
+
*/
|
|
81
|
+
scopeFilter?: IScopeFilterSettings;
|
|
52
82
|
/** Default row limit when a query omits `limit`. Must be a positive integer. Falls back to DEFAULT_LIMIT (10). */
|
|
53
83
|
defaultLimit?: number;
|
|
54
84
|
/**
|