Commit 8790a80
feat(data-fabric): support multiline_max field type and v2 single-record read (#549)
* feat(data-fabric): support multiline_max field type and v2 single-record read
Adds full CRUD support for the MULTILINE_MAX entity field type:
- MULTILINE_MAX added to EntityFieldDataType + SqlFieldType, both field-type
maps, the constraint spec ([1, 128 KB] UTF-16 byte budget), the default
(128 KB), and buildSqlTypeConstraints — enabling creation of entities with
multiline_max fields. Record insert/update/delete pass through generically.
- getRecordById now uses the v2 read endpoint
(/api/v2/EntityService/entity/{id}/read/{recordId}), which returns the full
multiline_max content. List/query endpoints continue to return a size marker
("HasValue=true Length=N") for those fields; getRecordById retrieves the full
value. The v2 read is not feature-flag gated and is behaviorally identical to
v1 for entities without multiline_max.
- JSDoc on the read/query methods documents the marker-vs-full contract.
Tests: unit (create defaults/override/range, sqlType mapping) and integration
(field-value generator, schema-create, marker-vs-full lifecycle).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(data-fabric): sync getRecordById JSDoc with ServiceModel (use {@link})
Address PR review: the service-class JSDoc must be identical to the
EntityServiceModel copy. Use {@link} cross-references instead of plain
backticks to match entities.models.ts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test(data-fabric): remove un-runnable MULTILINE_MAX lifecycle integration test
Address PR review: per rules.md, describe.skip is not the sanctioned choice
for a missing-config (schema-write scope) scenario. The block could never run
in CI (the standard PAT lacks DataFabric.Schema.Write), and the v2 read
behavior it asserted is already covered by the runnable getRecordById
integration tests and the unit tests — so removing it loses no runnable
coverage and avoids new config plumbing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(data-fabric): keep getRecordById on v1 read until v2 is proxy-whitelisted
The v2 single-record read endpoint is not yet allowlisted in the api.uipath.com
Cloudflare proxy (apps-dev-tools PR pending review/deploy), so getRecordById
returned 403 there and failed integration CI. Revert getRecordById to the v1
read endpoint (already whitelisted) so the gate passes and the multiline_max
field-type support ships now. The v2 switch is a one-line follow-up once the
proxy whitelist is deployed.
MULTILINE_MAX reads (list/query/getRecordById) return a size marker until then;
JSDoc updated to reflect that.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Reapply v2 read for getRecordById
Restore the v2 single-record read endpoint for getRecordById (returns full
MULTILINE_MAX content). This reverts the temporary v1 fallback — v2 read is the
required behavior. Integration CI will stay red until the proxy whitelist
(apps-dev-tools#98) is merged and the ApiCorsWorker is deployed, after which
the v2 read path returns 200.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(data-fabric): use {@link} for method refs in MULTILINE_MAX enum JSDoc
Address PR review nit: reference getAllRecords/queryRecordsById/getRecordById
via {@link} cross-references instead of backticks, consistent with the rest of
the file. Qualified with EntityServiceModel so TypeDoc resolves them from the
enum's file.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test(data-fabric): add config-gated MULTILINE_MAX lifecycle integration test
Address PR review: restore the integration test for the core lazy-load contract
(list returns a size marker; getRecordById/v2 read returns full content).
Gated behind a new SCHEMA_WRITE_SCOPE_AVAILABLE config flag (default false) via
describe.skipIf — it runs in any environment whose PAT carries DataFabric.Schema.Write
and skips in the standard test env that lacks it. An unconditional beforeAll throw
(as literally suggested) would redden CI permanently, since the standard PAT cannot
create the MULTILINE_MAX field; gating runs-where-possible while keeping CI green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(data-fabric): surface MULTILINE_MAX marker note on list/query methods
- Add the size-marker note to getAllRecords and queryRecordsById JSDoc
(service class + ServiceModel, kept identical per convention), pointing
to getRecordById for the full value
- Drop method-level references from the MULTILINE_MAX enum JSDoc in the
types file
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs(data-fabric): drop redundant back-reference from getRecordById JSDoc
The list/query methods now document the MULTILINE_MAX size-marker
behavior themselves, so getRecordById keeps only its own contract
(returns the full content). Applied to both the service class and
ServiceModel copies.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent bcbb4dc commit 8790a80
9 files changed
Lines changed: 126 additions & 1 deletion
File tree
- src
- models/data-fabric
- services/data-fabric
- utils/constants/endpoints
- tests
- integration
- config
- unit/services/data-fabric
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| 52 | + | |
52 | 53 | | |
53 | 54 | | |
54 | 55 | | |
| |||
78 | 79 | | |
79 | 80 | | |
80 | 81 | | |
| 82 | + | |
| 83 | + | |
81 | 84 | | |
82 | 85 | | |
83 | 86 | | |
| |||
110 | 113 | | |
111 | 114 | | |
112 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
113 | 120 | | |
114 | 121 | | |
115 | 122 | | |
| |||
151 | 158 | | |
152 | 159 | | |
153 | 160 | | |
| 161 | + | |
154 | 162 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
| 96 | + | |
96 | 97 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
148 | 151 | | |
149 | 152 | | |
150 | 153 | | |
| |||
194 | 197 | | |
195 | 198 | | |
196 | 199 | | |
| 200 | + | |
| 201 | + | |
197 | 202 | | |
198 | 203 | | |
199 | 204 | | |
| |||
417 | 422 | | |
418 | 423 | | |
419 | 424 | | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
420 | 428 | | |
421 | 429 | | |
422 | 430 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
23 | 30 | | |
24 | 31 | | |
25 | 32 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
122 | 125 | | |
123 | 126 | | |
124 | 127 | | |
| |||
187 | 190 | | |
188 | 191 | | |
189 | 192 | | |
| 193 | + | |
| 194 | + | |
190 | 195 | | |
191 | 196 | | |
192 | 197 | | |
| |||
565 | 570 | | |
566 | 571 | | |
567 | 572 | | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
568 | 576 | | |
569 | 577 | | |
570 | 578 | | |
| |||
1390 | 1398 | | |
1391 | 1399 | | |
1392 | 1400 | | |
| 1401 | + | |
| 1402 | + | |
1393 | 1403 | | |
1394 | 1404 | | |
1395 | 1405 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
| 26 | + | |
25 | 27 | | |
26 | | - | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
15 | 22 | | |
16 | 23 | | |
17 | 24 | | |
| |||
75 | 82 | | |
76 | 83 | | |
77 | 84 | | |
| 85 | + | |
78 | 86 | | |
79 | 87 | | |
80 | 88 | | |
| |||
119 | 127 | | |
120 | 128 | | |
121 | 129 | | |
| 130 | + | |
122 | 131 | | |
123 | 132 | | |
124 | 133 | | |
| |||
Lines changed: 51 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
| 59 | + | |
58 | 60 | | |
59 | 61 | | |
60 | 62 | | |
| |||
1259 | 1261 | | |
1260 | 1262 | | |
1261 | 1263 | | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
| 1267 | + | |
| 1268 | + | |
| 1269 | + | |
| 1270 | + | |
| 1271 | + | |
| 1272 | + | |
| 1273 | + | |
| 1274 | + | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
1262 | 1278 | | |
1263 | 1279 | | |
1264 | 1280 | | |
| |||
1458 | 1474 | | |
1459 | 1475 | | |
1460 | 1476 | | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
1461 | 1512 | | |
1462 | 1513 | | |
1463 | 1514 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2064 | 2064 | | |
2065 | 2065 | | |
2066 | 2066 | | |
| 2067 | + | |
| 2068 | + | |
| 2069 | + | |
| 2070 | + | |
| 2071 | + | |
| 2072 | + | |
| 2073 | + | |
| 2074 | + | |
| 2075 | + | |
| 2076 | + | |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
2067 | 2083 | | |
2068 | 2084 | | |
2069 | 2085 | | |
| |||
2145 | 2161 | | |
2146 | 2162 | | |
2147 | 2163 | | |
| 2164 | + | |
| 2165 | + | |
| 2166 | + | |
| 2167 | + | |
| 2168 | + | |
| 2169 | + | |
| 2170 | + | |
| 2171 | + | |
| 2172 | + | |
2148 | 2173 | | |
2149 | 2174 | | |
2150 | 2175 | | |
| |||
2632 | 2657 | | |
2633 | 2658 | | |
2634 | 2659 | | |
| 2660 | + | |
| 2661 | + | |
| 2662 | + | |
| 2663 | + | |
2635 | 2664 | | |
2636 | 2665 | | |
2637 | 2666 | | |
| |||
0 commit comments