@generazioneai/genquery 0.9.0 → 0.11.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/dist/federation.d.ts +44 -11
- package/dist/federation.d.ts.map +1 -1
- package/dist/federation.js +55 -30
- package/dist/federation.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tests/federation.test.js +113 -0
- package/dist/tests/federation.test.js.map +1 -1
- package/package.json +1 -1
package/dist/federation.d.ts
CHANGED
|
@@ -34,6 +34,14 @@ export interface FederatedModelShape {
|
|
|
34
34
|
relations: readonly string[];
|
|
35
35
|
/** Scalar/enum field names (FK candidates live here). */
|
|
36
36
|
scalars: readonly string[];
|
|
37
|
+
/**
|
|
38
|
+
* Cross-service "soft-FK" includes declared CO-LOCATED with the model (resource
|
|
39
|
+
* manifest), key → target model. Resolves semantic aliases whose key name does NOT
|
|
40
|
+
* match the model (es. `customer` → 'Juridical') — cases the `<key>Id`+`UpperFirst(key)`
|
|
41
|
+
* convention can't infer. Harvested into the index from the manifests; takes precedence
|
|
42
|
+
* over the global {@link AliasMap} but yields to a call-level `override`. fk default `<key>Id`.
|
|
43
|
+
*/
|
|
44
|
+
links?: Readonly<Record<string, FederationAlias>>;
|
|
37
45
|
}
|
|
38
46
|
export interface FederatedServiceShape {
|
|
39
47
|
/** Owning service name — e.g. 'skillID'. */
|
|
@@ -85,20 +93,43 @@ export declare class FederationPlanError extends Error {
|
|
|
85
93
|
* JuridicalIndividual → juridicalIndividuals · City → cities · Address → addresses
|
|
86
94
|
*/
|
|
87
95
|
export declare function pluralizeCamel(model: string): string;
|
|
96
|
+
/** Target del federated include per un alias semantico (key ≠ nome model). */
|
|
97
|
+
export type FederationAlias = string | {
|
|
98
|
+
model: string;
|
|
99
|
+
fk?: string;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Alias map GLOBALE key → model target. Dichiarata UNA volta (gateway), risolve
|
|
103
|
+
* automaticamente le chiavi semantiche il cui nome non combacia col model:
|
|
104
|
+
* { customer: 'Juridical', submitter: 'JuridicalIndividual' } (fk default '<key>Id')
|
|
105
|
+
* { owner: { model: 'JuridicalIndividual', fk: 'ownerJiId' } }
|
|
106
|
+
*/
|
|
107
|
+
export type AliasMap = Record<string, FederationAlias>;
|
|
108
|
+
/**
|
|
109
|
+
* Elemento di `alwaysInclude`: una chiave (string) oppure una chiave con shape
|
|
110
|
+
* annidata da inoltrare al target — es. `{ key: 'juridicalIndividual',
|
|
111
|
+
* include: { individual: true } }` per ripristinare un nested che i vecchi
|
|
112
|
+
* populate settavano sempre.
|
|
113
|
+
*/
|
|
114
|
+
export type AlwaysIncludeItem = string | {
|
|
115
|
+
key: string;
|
|
116
|
+
include?: Record<string, unknown>;
|
|
117
|
+
select?: Record<string, unknown>;
|
|
118
|
+
};
|
|
88
119
|
/**
|
|
89
120
|
* Split a client include tree into the locally-resolvable part and the remote
|
|
90
121
|
* (federated) plans, using convention-driven discovery over the index.
|
|
91
122
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
123
|
+
* Risoluzione per chiave (in ordine): relazione locale reale → override esplicito
|
|
124
|
+
* → link del manifest (`local.links`, co-locato col model) → aliasMap globale →
|
|
125
|
+
* convenzione (`<key>Id` scalare + model `UpperFirst(key)`).
|
|
126
|
+
* Owner del model target: il servizio del cmd se lo possiede (soft-FK same-service),
|
|
127
|
+
* altrimenti l'unico owner esterno; più owner → serve override/alias. Chiavi non
|
|
128
|
+
* federabili restano nel localInclude → il motore locale emette il suo errore
|
|
129
|
+
* standard (la federazione NON lo inghiotte).
|
|
99
130
|
*
|
|
100
|
-
* `alwaysInclude`
|
|
101
|
-
*
|
|
131
|
+
* `alwaysInclude` = chiavi federate da risolvere anche se il client non le chiede
|
|
132
|
+
* (retro-compat con i gateway che arricchivano sempre); supporta shape annidata.
|
|
102
133
|
*/
|
|
103
134
|
export declare function planFederatedIncludes(opts: {
|
|
104
135
|
index: FederationIndex;
|
|
@@ -107,8 +138,10 @@ export declare function planFederatedIncludes(opts: {
|
|
|
107
138
|
/** Local DMMF PascalCase model returned by the cmd. */
|
|
108
139
|
model: string;
|
|
109
140
|
include?: Record<string, unknown>;
|
|
110
|
-
alwaysInclude?: readonly
|
|
111
|
-
/**
|
|
141
|
+
alwaysInclude?: readonly AlwaysIncludeItem[];
|
|
142
|
+
/** Alias semantici globali (key → model target). */
|
|
143
|
+
aliasMap?: AliasMap;
|
|
144
|
+
/** Per-key explicit targets for ambiguous/unconventional cases (vince su aliasMap). */
|
|
112
145
|
overrides?: Record<string, {
|
|
113
146
|
service: string;
|
|
114
147
|
model?: string;
|
package/dist/federation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,yDAAyD;IACzD,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":"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"}
|
package/dist/federation.js
CHANGED
|
@@ -87,19 +87,19 @@ function pluralizeCamel(model) {
|
|
|
87
87
|
* Split a client include tree into the locally-resolvable part and the remote
|
|
88
88
|
* (federated) plans, using convention-driven discovery over the index.
|
|
89
89
|
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
90
|
+
* Risoluzione per chiave (in ordine): relazione locale reale → override esplicito
|
|
91
|
+
* → link del manifest (`local.links`, co-locato col model) → aliasMap globale →
|
|
92
|
+
* convenzione (`<key>Id` scalare + model `UpperFirst(key)`).
|
|
93
|
+
* Owner del model target: il servizio del cmd se lo possiede (soft-FK same-service),
|
|
94
|
+
* altrimenti l'unico owner esterno; più owner → serve override/alias. Chiavi non
|
|
95
|
+
* federabili restano nel localInclude → il motore locale emette il suo errore
|
|
96
|
+
* standard (la federazione NON lo inghiotte).
|
|
97
97
|
*
|
|
98
|
-
* `alwaysInclude`
|
|
99
|
-
*
|
|
98
|
+
* `alwaysInclude` = chiavi federate da risolvere anche se il client non le chiede
|
|
99
|
+
* (retro-compat con i gateway che arricchivano sempre); supporta shape annidata.
|
|
100
100
|
*/
|
|
101
101
|
function planFederatedIncludes(opts) {
|
|
102
|
-
const { index, service, model, include, alwaysInclude, overrides } = opts;
|
|
102
|
+
const { index, service, model, include, alwaysInclude, aliasMap, overrides } = opts;
|
|
103
103
|
const local = index.modelOf(service, model);
|
|
104
104
|
if (!local) {
|
|
105
105
|
throw new FederationPlanError(`Federation: model '${model}' is not in the datamodel of service '${service}' — check the federation configuration`, model);
|
|
@@ -107,7 +107,13 @@ function planFederatedIncludes(opts) {
|
|
|
107
107
|
const localInclude = {};
|
|
108
108
|
const remote = [];
|
|
109
109
|
const planned = new Set();
|
|
110
|
-
const
|
|
110
|
+
const norm = (a) => a == null ? undefined : typeof a === "string" ? { model: a } : a;
|
|
111
|
+
const aliasOf = (key) => norm(aliasMap?.[key]);
|
|
112
|
+
// Manifest-declared link (co-located with the model) — più specifico dell'aliasMap globale.
|
|
113
|
+
const linkOf = (key) => norm(local.links?.[key]);
|
|
114
|
+
// explicitNested: shape annidata forzata (da alwaysInclude object) che ha
|
|
115
|
+
// precedenza sul nested ricavato dal value del client.
|
|
116
|
+
const planKey = (key, value, demanded, explicitNested) => {
|
|
111
117
|
if (planned.has(key))
|
|
112
118
|
return;
|
|
113
119
|
planned.add(key);
|
|
@@ -116,10 +122,12 @@ function planFederatedIncludes(opts) {
|
|
|
116
122
|
localInclude[key] = value;
|
|
117
123
|
return;
|
|
118
124
|
}
|
|
119
|
-
// 2)
|
|
125
|
+
// 2) Override esplicito > link del manifest (per-model) > aliasMap globale > convenzione.
|
|
120
126
|
const override = overrides?.[key];
|
|
121
|
-
const
|
|
122
|
-
const
|
|
127
|
+
const link = linkOf(key);
|
|
128
|
+
const alias = aliasOf(key);
|
|
129
|
+
const fk = override?.fk ?? link?.fk ?? alias?.fk ?? `${key}Id`;
|
|
130
|
+
const targetModel = override?.model ?? link?.model ?? alias?.model ?? upperFirst(key);
|
|
123
131
|
if (local.scalars.includes(fk)) {
|
|
124
132
|
let targetService = override?.service;
|
|
125
133
|
if (!targetService) {
|
|
@@ -132,17 +140,21 @@ function planFederatedIncludes(opts) {
|
|
|
132
140
|
}
|
|
133
141
|
else if (owners.length > 1) {
|
|
134
142
|
throw new FederationPlanError(`Federation: include '${key}' on ${service}.${model} is ambiguous — model '${targetModel}' is owned by ` +
|
|
135
|
-
`[${owners.map((o) => o.service).join(", ")}]. Add an override for '${key}'.`, key);
|
|
143
|
+
`[${owners.map((o) => o.service).join(", ")}]. Add an override/alias for '${key}'.`, key);
|
|
136
144
|
}
|
|
137
145
|
}
|
|
138
146
|
if (targetService) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
?
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
147
|
+
let nested = explicitNested;
|
|
148
|
+
if (!nested) {
|
|
149
|
+
const src = value && typeof value === "object" ? value : undefined;
|
|
150
|
+
nested =
|
|
151
|
+
src && (src.include || src.select)
|
|
152
|
+
? {
|
|
153
|
+
include: src.include,
|
|
154
|
+
select: src.select,
|
|
155
|
+
}
|
|
156
|
+
: undefined;
|
|
157
|
+
}
|
|
146
158
|
remote.push({ key, fk, targetService, targetModel, nested });
|
|
147
159
|
return;
|
|
148
160
|
}
|
|
@@ -151,17 +163,25 @@ function planFederatedIncludes(opts) {
|
|
|
151
163
|
// keys fall through to the local engine for its standard validation error.
|
|
152
164
|
if (demanded) {
|
|
153
165
|
throw new FederationPlanError(`Federation: alwaysInclude '${key}' on ${service}.${model} matches no local relation, ` +
|
|
154
|
-
`no scalar FK '${fk}', or no known model '${targetModel}'`, key);
|
|
166
|
+
`no scalar FK '${fk}', no alias, or no known model '${targetModel}'`, key);
|
|
155
167
|
}
|
|
156
168
|
localInclude[key] = value;
|
|
157
169
|
};
|
|
158
170
|
for (const [key, value] of Object.entries(include ?? {})) {
|
|
159
|
-
|
|
160
|
-
|
|
171
|
+
// include disattivato dal client: marcalo come gestito così alwaysInclude NON
|
|
172
|
+
// lo resuscita (rispetta la volontà esplicita del client di escluderlo).
|
|
173
|
+
if (value === false || value == null) {
|
|
174
|
+
planned.add(key);
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
161
177
|
planKey(key, value, false);
|
|
162
178
|
}
|
|
163
|
-
for (const
|
|
164
|
-
|
|
179
|
+
for (const item of alwaysInclude ?? []) {
|
|
180
|
+
if (typeof item === "string")
|
|
181
|
+
planKey(item, true, true);
|
|
182
|
+
else
|
|
183
|
+
planKey(item.key, true, true, { include: item.include, select: item.select });
|
|
184
|
+
}
|
|
165
185
|
return {
|
|
166
186
|
localInclude: Object.keys(localInclude).length ? localInclude : undefined,
|
|
167
187
|
remote,
|
|
@@ -187,9 +207,14 @@ function collectForeignIds(rows, fk) {
|
|
|
187
207
|
*/
|
|
188
208
|
function mergeFederatedRows(rows, plan, targetRows) {
|
|
189
209
|
const byId = new Map();
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
210
|
+
// keep-first: un owner che ritorna id duplicati (chunk sovrapposti/bug) è deterministico.
|
|
211
|
+
for (const t of targetRows) {
|
|
212
|
+
if (t?.id == null)
|
|
213
|
+
continue;
|
|
214
|
+
const k = String(t.id);
|
|
215
|
+
if (!byId.has(k))
|
|
216
|
+
byId.set(k, t);
|
|
217
|
+
}
|
|
193
218
|
for (const row of rows) {
|
|
194
219
|
if (!row || typeof row !== "object")
|
|
195
220
|
continue;
|
package/dist/federation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;
|
|
1
|
+
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ export { parseQuery } from "./parser";
|
|
|
6
6
|
export { GenQueryEngine, type GenQueryEngineOptions } from "./engine";
|
|
7
7
|
export type { Adapter } from "./adapters/base";
|
|
8
8
|
export { parseDateTime } from "./datetime";
|
|
9
|
-
export { toFederatedShape, buildFederationIndex, planFederatedIncludes, collectForeignIds, mergeFederatedRows, pluralizeCamel, FederationPlanError, type FederatedModelShape, type FederatedServiceShape, type FederationIndex, type FederatedIncludePlan, type FederationPlan, } from "./federation";
|
|
9
|
+
export { toFederatedShape, buildFederationIndex, planFederatedIncludes, collectForeignIds, mergeFederatedRows, pluralizeCamel, FederationPlanError, type FederatedModelShape, type FederatedServiceShape, type FederationIndex, type FederatedIncludePlan, type FederationPlan, type FederationAlias, type AliasMap, type AlwaysIncludeItem, } from "./federation";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACtE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACtE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AACnB,mCAAsE;AAA7D,wGAAA,cAAc,OAAA;AAEvB,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AACnB,mCAAsE;AAA7D,wGAAA,cAAc,OAAA;AAEvB,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,2CAgBsB;AAfpB,8GAAA,gBAAgB,OAAA;AAChB,kHAAA,oBAAoB,OAAA;AACpB,mHAAA,qBAAqB,OAAA;AACrB,+GAAA,iBAAiB,OAAA;AACjB,gHAAA,kBAAkB,OAAA;AAClB,4GAAA,cAAc,OAAA;AACd,iHAAA,mBAAmB,OAAA"}
|
|
@@ -169,4 +169,117 @@ const index = (0, federation_1.buildFederationIndex)([hr, id, atlas]);
|
|
|
169
169
|
node_assert_1.strict.equal((0, federation_1.pluralizeCamel)("Address"), "addresses");
|
|
170
170
|
node_assert_1.strict.equal((0, federation_1.pluralizeCamel)("Structure"), "structures");
|
|
171
171
|
});
|
|
172
|
+
// ── aliasMap / alwaysInclude annidato / include:false / keep-first ──────────
|
|
173
|
+
(0, node_test_1.test)("aliasMap risolve chiavi semantiche (key ≠ model) senza override", () => {
|
|
174
|
+
const certet = (0, federation_1.toFederatedShape)("skillCertet", {
|
|
175
|
+
models: [{ name: "EmployeePlanning", fields: [
|
|
176
|
+
{ name: "id", kind: "scalar" },
|
|
177
|
+
{ name: "customerId", kind: "scalar" },
|
|
178
|
+
{ name: "submitterId", kind: "scalar" },
|
|
179
|
+
] }],
|
|
180
|
+
});
|
|
181
|
+
const idx = (0, federation_1.buildFederationIndex)([certet, id]);
|
|
182
|
+
const plan = (0, federation_1.planFederatedIncludes)({
|
|
183
|
+
index: idx, service: "skillCertet", model: "EmployeePlanning",
|
|
184
|
+
include: { customer: true, submitter: true },
|
|
185
|
+
aliasMap: { customer: "Juridical", submitter: "JuridicalIndividual" },
|
|
186
|
+
});
|
|
187
|
+
const byKey = Object.fromEntries(plan.remote.map((r) => [r.key, r]));
|
|
188
|
+
node_assert_1.strict.equal(byKey.customer.targetModel, "Juridical");
|
|
189
|
+
node_assert_1.strict.equal(byKey.customer.fk, "customerId");
|
|
190
|
+
node_assert_1.strict.equal(byKey.submitter.targetModel, "JuridicalIndividual");
|
|
191
|
+
node_assert_1.strict.equal(byKey.submitter.fk, "submitterId");
|
|
192
|
+
});
|
|
193
|
+
(0, node_test_1.test)("aliasMap con fk esplicito + override vince su aliasMap", () => {
|
|
194
|
+
const svc = (0, federation_1.toFederatedShape)("skillX", { models: [{ name: "Doc", fields: [
|
|
195
|
+
{ name: "id", kind: "scalar" }, { name: "ownerJiId", kind: "scalar" },
|
|
196
|
+
] }] });
|
|
197
|
+
const idx = (0, federation_1.buildFederationIndex)([svc, id]);
|
|
198
|
+
const plan = (0, federation_1.planFederatedIncludes)({
|
|
199
|
+
index: idx, service: "skillX", model: "Doc",
|
|
200
|
+
include: { owner: true },
|
|
201
|
+
aliasMap: { owner: { model: "JuridicalIndividual", fk: "ownerJiId" } },
|
|
202
|
+
});
|
|
203
|
+
node_assert_1.strict.equal(plan.remote[0].fk, "ownerJiId");
|
|
204
|
+
node_assert_1.strict.equal(plan.remote[0].targetModel, "JuridicalIndividual");
|
|
205
|
+
});
|
|
206
|
+
(0, node_test_1.test)("manifest links risolve chiavi semantiche senza aliasMap globale", () => {
|
|
207
|
+
// links co-locati col model (harvestati dal resource manifest) — niente aliasMap.
|
|
208
|
+
const certet = {
|
|
209
|
+
service: "skillCertet",
|
|
210
|
+
models: [{
|
|
211
|
+
name: "EmployeePlanning",
|
|
212
|
+
relations: [],
|
|
213
|
+
scalars: ["id", "customerId", "submitterId"],
|
|
214
|
+
links: { customer: "Juridical", submitter: { model: "JuridicalIndividual" } },
|
|
215
|
+
}],
|
|
216
|
+
};
|
|
217
|
+
const idx = (0, federation_1.buildFederationIndex)([certet, id]);
|
|
218
|
+
// aliasMap globale in CONFLITTO col link → il link (co-locato) deve vincere.
|
|
219
|
+
const plan = (0, federation_1.planFederatedIncludes)({
|
|
220
|
+
index: idx, service: "skillCertet", model: "EmployeePlanning",
|
|
221
|
+
include: { customer: true, submitter: true },
|
|
222
|
+
aliasMap: { customer: "City" },
|
|
223
|
+
});
|
|
224
|
+
const byKey = Object.fromEntries(plan.remote.map((r) => [r.key, r]));
|
|
225
|
+
node_assert_1.strict.equal(byKey.customer.targetModel, "Juridical"); // link batte aliasMap (City)
|
|
226
|
+
node_assert_1.strict.equal(byKey.customer.fk, "customerId");
|
|
227
|
+
node_assert_1.strict.equal(byKey.submitter.targetModel, "JuridicalIndividual");
|
|
228
|
+
node_assert_1.strict.equal(byKey.submitter.fk, "submitterId");
|
|
229
|
+
});
|
|
230
|
+
(0, node_test_1.test)("override vince sul link del manifest, il link vince sull'aliasMap globale", () => {
|
|
231
|
+
const svc = {
|
|
232
|
+
service: "skillCertet",
|
|
233
|
+
models: [{
|
|
234
|
+
name: "Doc",
|
|
235
|
+
relations: [],
|
|
236
|
+
scalars: ["id", "customerId", "ownerJiId"],
|
|
237
|
+
links: { customer: "Juridical" },
|
|
238
|
+
}],
|
|
239
|
+
};
|
|
240
|
+
const idx = (0, federation_1.buildFederationIndex)([svc, id]);
|
|
241
|
+
// link (Juridical) batte aliasMap (City); override batte tutto.
|
|
242
|
+
const plan = (0, federation_1.planFederatedIncludes)({
|
|
243
|
+
index: idx, service: "skillCertet", model: "Doc",
|
|
244
|
+
include: { customer: true, owner: true },
|
|
245
|
+
aliasMap: { customer: "City", owner: { model: "JuridicalIndividual", fk: "ownerJiId" } },
|
|
246
|
+
overrides: { customer: { service: "skillID", model: "JuridicalIndividual", fk: "ownerJiId" } },
|
|
247
|
+
});
|
|
248
|
+
const byKey = Object.fromEntries(plan.remote.map((r) => [r.key, r]));
|
|
249
|
+
node_assert_1.strict.equal(byKey.customer.targetModel, "JuridicalIndividual"); // override
|
|
250
|
+
node_assert_1.strict.equal(byKey.customer.fk, "ownerJiId");
|
|
251
|
+
node_assert_1.strict.equal(byKey.owner.targetModel, "JuridicalIndividual"); // aliasMap (nessun link 'owner')
|
|
252
|
+
});
|
|
253
|
+
(0, node_test_1.test)("alwaysInclude annidato inoltra include al target (ripristina nested individual)", () => {
|
|
254
|
+
const hr = (0, federation_1.toFederatedShape)("skillHr", { models: [{ name: "Tempbadge", fields: [
|
|
255
|
+
{ name: "id", kind: "scalar" }, { name: "juridicalIndividualId", kind: "scalar" },
|
|
256
|
+
] }] });
|
|
257
|
+
const idx = (0, federation_1.buildFederationIndex)([hr, id]);
|
|
258
|
+
const plan = (0, federation_1.planFederatedIncludes)({
|
|
259
|
+
index: idx, service: "skillHr", model: "Tempbadge",
|
|
260
|
+
alwaysInclude: [{ key: "juridicalIndividual", include: { individual: true } }],
|
|
261
|
+
});
|
|
262
|
+
node_assert_1.strict.equal(plan.remote.length, 1);
|
|
263
|
+
node_assert_1.strict.deepEqual(plan.remote[0].nested, { include: { individual: true }, select: undefined });
|
|
264
|
+
});
|
|
265
|
+
(0, node_test_1.test)("include:false NON viene resuscitato da alwaysInclude", () => {
|
|
266
|
+
const hr = (0, federation_1.toFederatedShape)("skillHr", { models: [{ name: "Tempbadge", fields: [
|
|
267
|
+
{ name: "id", kind: "scalar" }, { name: "juridicalIndividualId", kind: "scalar" },
|
|
268
|
+
] }] });
|
|
269
|
+
const idx = (0, federation_1.buildFederationIndex)([hr, id]);
|
|
270
|
+
const plan = (0, federation_1.planFederatedIncludes)({
|
|
271
|
+
index: idx, service: "skillHr", model: "Tempbadge",
|
|
272
|
+
include: { juridicalIndividual: false },
|
|
273
|
+
alwaysInclude: ["juridicalIndividual"],
|
|
274
|
+
});
|
|
275
|
+
node_assert_1.strict.equal(plan.remote.length, 0);
|
|
276
|
+
node_assert_1.strict.equal(plan.localInclude, undefined);
|
|
277
|
+
});
|
|
278
|
+
(0, node_test_1.test)("mergeFederatedRows keep-first su id duplicati del target", () => {
|
|
279
|
+
const rows = [{ id: "a", jiId: "x" }];
|
|
280
|
+
(0, federation_1.mergeFederatedRows)(rows, { key: "ji", fk: "jiId" }, [
|
|
281
|
+
{ id: "x", v: 1 }, { id: "x", v: 2 },
|
|
282
|
+
]);
|
|
283
|
+
node_assert_1.strict.equal(rows[0].ji.v, 1);
|
|
284
|
+
});
|
|
172
285
|
//# sourceMappingURL=federation.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.test.js","sourceRoot":"","sources":["../../src/tests/federation.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"federation.test.js","sourceRoot":"","sources":["../../src/tests/federation.test.ts"],"names":[],"mappings":"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"}
|