@ai-matrx/records 0.84.4 → 0.84.6
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/CHANGELOG.md +14 -0
- package/dist/app-table/index.cjs +51 -2
- package/dist/app-table/index.cjs.map +1 -1
- package/dist/app-table/index.d.cts +3 -3
- package/dist/app-table/index.d.ts +3 -3
- package/dist/app-table/index.js +51 -2
- package/dist/app-table/index.js.map +1 -1
- package/dist/{client-TU-nvgcF.d.ts → client-Cx2JV38-.d.ts} +7 -1
- package/dist/{client-CesQciPd.d.cts → client-xErw4ZgF.d.cts} +7 -1
- package/dist/core/index.cjs +59 -4
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +12 -5
- package/dist/core/index.d.ts +12 -5
- package/dist/core/index.js +59 -4
- package/dist/core/index.js.map +1 -1
- package/dist/data/index.cjs +51 -2
- package/dist/data/index.cjs.map +1 -1
- package/dist/data/index.d.cts +2 -2
- package/dist/data/index.d.ts +2 -2
- package/dist/data/index.js +51 -2
- package/dist/data/index.js.map +1 -1
- package/dist/{declareTable-COXYIOiT.d.ts → declareTable-CYzGWD5K.d.ts} +2 -2
- package/dist/{declareTable-B9sr2E0h.d.cts → declareTable-G-H3AK48.d.cts} +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +66 -5
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +16 -1
- package/dist/react/index.d.ts +16 -1
- package/dist/react/index.js +66 -5
- package/dist/react/index.js.map +1 -1
- package/dist/{table-kind-C5T-DOdc.d.ts → table-kind-B_qYmQJG.d.ts} +10 -1
- package/dist/{table-kind-B4vIKJVM.d.cts → table-kind-KMjVs-rk.d.cts} +10 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RelationCoordinate, C as ChoiceNudge, T as TableArchiveProgress, a as TableRestoreProgress, b as TableDuplicateProgress, c as TableDuplicated, d as TableCopyInProgress, A as ArchiveLane, e as ArchivedRow, f as Table, g as TableHome, h as TableMoved, i as ChoiceUsage, j as ChoiceRehome, k as ChoiceCellBack, l as ChoicesRehomed, m as TableCapacity, F as FieldDrift, n as FieldRetyped, o as RecordsMerged, M as MigrationUndone, p as RelationWordsManyArgs, q as RelationIcons, r as ReverseColumn, s as ReverseLinksManyArgs, t as ReverseLinks, S as SourceArchived,
|
|
1
|
+
import { R as RelationCoordinate, C as ChoiceNudge, T as TableArchiveProgress, a as TableRestoreProgress, b as TableDuplicateProgress, c as TableDuplicated, d as TableCopyInProgress, A as ArchiveLane, e as ArchivedRow, f as Table, g as TableHome, h as TableMoved, i as ChoiceUsage, j as ChoiceRehome, k as ChoiceCellBack, l as ChoicesRehomed, m as TableCapacity, F as FieldDrift, n as FieldRetyped, o as RecordsMerged, M as MigrationUndone, p as RelationWordsManyArgs, q as RelationIcons, r as ReverseColumn, s as ReverseLinksManyArgs, t as ReverseLinks, u as ReverseLinksFieldsArgs, S as SourceArchived, v as TableKindFacts, E as EntityTableFacts, w as EntityFieldsAcross, N as NewEntityFieldDeclaration, x as EntityFieldRights, y as EntityRecordRead, z as EntityBackLinks, B as EntityRowWritten, D as EntityRecordsFound, P as Pipeline, G as PipelineColumn, H as PipelineVerdict, I as PipelineMoveResult, J as PipelineMoveManyItem, K as PipelineMoveMany, L as PipelineSpec, O as PipelineDeclared, Q as StageRuleOnFail, U as StageRuleEnforcement, V as StagePending, W as StagePendingOnBoard, X as PipelineGate, Y as PipelineGatePreview, Z as FormLookOptions, _ as ImportPlan, $ as ImportPolicy, a0 as ImportOpened, a1 as ImportColumnsDeclared, a2 as ImportBatchResult, a3 as ImportFinished, a4 as ImportReport, a5 as ImportRun, a6 as InboundDeclared, a7 as InboundAddress, a8 as PortalSummary, a9 as PortalArchiveFilter, aa as PortalArchiveAnswer, ab as FormArchiveAnswer, ac as ArchivedForm, ad as ArchivedChecklistTemplate, ae as TableRowDefaults, af as TableRowDefaultsPatch, ag as RowDefaultsApplied, ah as RecordRowControls, ai as PortalTableRef, aj as PortalCard, ak as PortalConfigInput, al as PortalFormSpec, am as PortalFormAnswer, an as PortalInvitation, ao as PortalRevocation, ap as PortalPreviewRow, aq as CaptureSheetSummary, ar as CaptureSheetFace, as as CaptureFileRef, at as CaptureOutcome, au as EnrichmentSummary, av as EnrichDeclared, aw as EnrichDueRow, ax as EnrichCell, ay as EnrichRun, az as DrillSource, aA as DrillDefinition, aB as DrillQuestion, aC as DrillAnswer, aD as DrillRowsPage, aE as DocToken, aF as DocUnresolvedToken, aG as DocTemplateRow, aH as DocRenderRow, aI as DocSignatureRow, aJ as RecordHistoryEntry, aK as RecordScopeContext, aL as ConversationScope, aM as ConversationScopeContext, aN as FieldHistoryEntry, aO as RestorePreview, aP as RestoreResult, aQ as CommentThreadRead, aR as CommentWritten, aS as AnonTokenBinding, aT as ChecklistSpec, aU as ChecklistDeclared, aV as ChecklistTemplateSummary, aW as ChecklistTemplateShape, aX as ChecklistRunStarted, aY as ChecklistRunStep, aZ as ChecklistRunSummary, a_ as ChecklistStepCompleted, a$ as WorkState, b0 as WorkGraph, b1 as WorkInstantiation, b2 as WorkTurn, b3 as WorkAssignmentField, b4 as WorkSlotHold, b5 as WorkInboxView, b6 as WorkInboxItem, b7 as InboxStateChange, b8 as InboxCounts, b9 as WorkListFlavour, ba as WorkListItem, bb as WorkAssignment, bc as WorkRecordState, bd as WorkApprover, be as WorkChange, bf as WorkApprovalFiled, bg as WorkApprovalDecision, bh as WorkDecideManyItem, bi as WorkDecideMany, bj as ExternalPrincipalCard, bk as PublishBinding, bl as ResolvedPublishBinding, bm as ResolvedPublishBindingKind, bn as MyLevel, bo as DecorationPath, bp as TableDecorations, bq as GridLayout, br as FormulaParse, bs as RowAction, bt as ActionRunResult, bu as AutomationSpec, bv as AutomationDeclared, bw as AutomationList, bx as AutomationFlipped, by as AutomationRuns, bz as RecordEvent, bA as TableWebhookDeclared, bB as TableWebhook, bC as IoExportPage, bD as TableListEntry, bE as DataHomeTable, bF as TableSyncSpec, bG as TableSyncResult, bH as TableRowCount, bI as RecordHeader, bJ as OutsideShareAnswer, bK as ViewOrderSet } from './table-kind-B_qYmQJG.js';
|
|
2
2
|
import { S as StoreFilter, F as FormSummary, B as BookingSummary, a as BookingAvailability, b as BookingDeclared, c as FormRoute, d as FormResults, D as DashboardSummary, e as DashboardBlock, R as RecordFilter, A as AggregateCompare, f as AggregateBucket, g as DashboardRunResult, h as StuckRow, i as AggregateMeasure, j as AggregateRow, k as Subscription, M as MySubscription, l as SubscriptionSpec, m as DigestPreview, n as SavedViewRow, o as SavedViewSpecIn, p as RowTemplateRow } from './subscription-CUok1vAm.js';
|
|
3
3
|
import { b as Field, c as FieldPatch, N as NewFieldDeclaration, R as RelationNamesAnswer, d as FieldDuplicated, e as FieldProposal, T as TableProposal } from './field-BIJiFPc0.js';
|
|
4
4
|
import { U as Uuid, f as Timestamp, g as RecordDocument, h as RecordsResult, i as RecordChange, j as RecordChangeResult, k as RecordGraphWritten, l as RecordRead, m as ReadRow, n as RecordPageSort, o as RecordPage, p as RecordKeysetPage, q as StoredRecord, r as RecordRevision, s as ReadValue, t as RecordsErrorCode, R as RecordsError, W as WriteConflict } from './record-1yDCn169.js';
|
|
@@ -746,6 +746,12 @@ interface RecordsClient {
|
|
|
746
746
|
* one count and one page. A record with no links answers `{ total: 0, links: [] }`.
|
|
747
747
|
*/
|
|
748
748
|
reverseLinksMany(args: ReverseLinksManyArgs): Promise<RecordsResult<Record<string, ReverseLinks>>>;
|
|
749
|
+
/**
|
|
750
|
+
* The same, through SEVERAL reverse columns in ONE call (`custom.reverse_links_many_fields`):
|
|
751
|
+
* `{ [source field id]: { [record id]: { total, links } } }`. A store without the door answers
|
|
752
|
+
* `door_absent` — ask `reverseLinksMany` per column then.
|
|
753
|
+
*/
|
|
754
|
+
reverseLinksFields(args: ReverseLinksFieldsArgs): Promise<RecordsResult<Record<string, Record<string, ReverseLinks>>>>;
|
|
749
755
|
/** Take a field off a table. Refuses the title field, the last field, and one another field reads through. */
|
|
750
756
|
fieldRetire(args: {
|
|
751
757
|
field_id: Uuid;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RelationCoordinate, C as ChoiceNudge, T as TableArchiveProgress, a as TableRestoreProgress, b as TableDuplicateProgress, c as TableDuplicated, d as TableCopyInProgress, A as ArchiveLane, e as ArchivedRow, f as Table, g as TableHome, h as TableMoved, i as ChoiceUsage, j as ChoiceRehome, k as ChoiceCellBack, l as ChoicesRehomed, m as TableCapacity, F as FieldDrift, n as FieldRetyped, o as RecordsMerged, M as MigrationUndone, p as RelationWordsManyArgs, q as RelationIcons, r as ReverseColumn, s as ReverseLinksManyArgs, t as ReverseLinks, S as SourceArchived,
|
|
1
|
+
import { R as RelationCoordinate, C as ChoiceNudge, T as TableArchiveProgress, a as TableRestoreProgress, b as TableDuplicateProgress, c as TableDuplicated, d as TableCopyInProgress, A as ArchiveLane, e as ArchivedRow, f as Table, g as TableHome, h as TableMoved, i as ChoiceUsage, j as ChoiceRehome, k as ChoiceCellBack, l as ChoicesRehomed, m as TableCapacity, F as FieldDrift, n as FieldRetyped, o as RecordsMerged, M as MigrationUndone, p as RelationWordsManyArgs, q as RelationIcons, r as ReverseColumn, s as ReverseLinksManyArgs, t as ReverseLinks, u as ReverseLinksFieldsArgs, S as SourceArchived, v as TableKindFacts, E as EntityTableFacts, w as EntityFieldsAcross, N as NewEntityFieldDeclaration, x as EntityFieldRights, y as EntityRecordRead, z as EntityBackLinks, B as EntityRowWritten, D as EntityRecordsFound, P as Pipeline, G as PipelineColumn, H as PipelineVerdict, I as PipelineMoveResult, J as PipelineMoveManyItem, K as PipelineMoveMany, L as PipelineSpec, O as PipelineDeclared, Q as StageRuleOnFail, U as StageRuleEnforcement, V as StagePending, W as StagePendingOnBoard, X as PipelineGate, Y as PipelineGatePreview, Z as FormLookOptions, _ as ImportPlan, $ as ImportPolicy, a0 as ImportOpened, a1 as ImportColumnsDeclared, a2 as ImportBatchResult, a3 as ImportFinished, a4 as ImportReport, a5 as ImportRun, a6 as InboundDeclared, a7 as InboundAddress, a8 as PortalSummary, a9 as PortalArchiveFilter, aa as PortalArchiveAnswer, ab as FormArchiveAnswer, ac as ArchivedForm, ad as ArchivedChecklistTemplate, ae as TableRowDefaults, af as TableRowDefaultsPatch, ag as RowDefaultsApplied, ah as RecordRowControls, ai as PortalTableRef, aj as PortalCard, ak as PortalConfigInput, al as PortalFormSpec, am as PortalFormAnswer, an as PortalInvitation, ao as PortalRevocation, ap as PortalPreviewRow, aq as CaptureSheetSummary, ar as CaptureSheetFace, as as CaptureFileRef, at as CaptureOutcome, au as EnrichmentSummary, av as EnrichDeclared, aw as EnrichDueRow, ax as EnrichCell, ay as EnrichRun, az as DrillSource, aA as DrillDefinition, aB as DrillQuestion, aC as DrillAnswer, aD as DrillRowsPage, aE as DocToken, aF as DocUnresolvedToken, aG as DocTemplateRow, aH as DocRenderRow, aI as DocSignatureRow, aJ as RecordHistoryEntry, aK as RecordScopeContext, aL as ConversationScope, aM as ConversationScopeContext, aN as FieldHistoryEntry, aO as RestorePreview, aP as RestoreResult, aQ as CommentThreadRead, aR as CommentWritten, aS as AnonTokenBinding, aT as ChecklistSpec, aU as ChecklistDeclared, aV as ChecklistTemplateSummary, aW as ChecklistTemplateShape, aX as ChecklistRunStarted, aY as ChecklistRunStep, aZ as ChecklistRunSummary, a_ as ChecklistStepCompleted, a$ as WorkState, b0 as WorkGraph, b1 as WorkInstantiation, b2 as WorkTurn, b3 as WorkAssignmentField, b4 as WorkSlotHold, b5 as WorkInboxView, b6 as WorkInboxItem, b7 as InboxStateChange, b8 as InboxCounts, b9 as WorkListFlavour, ba as WorkListItem, bb as WorkAssignment, bc as WorkRecordState, bd as WorkApprover, be as WorkChange, bf as WorkApprovalFiled, bg as WorkApprovalDecision, bh as WorkDecideManyItem, bi as WorkDecideMany, bj as ExternalPrincipalCard, bk as PublishBinding, bl as ResolvedPublishBinding, bm as ResolvedPublishBindingKind, bn as MyLevel, bo as DecorationPath, bp as TableDecorations, bq as GridLayout, br as FormulaParse, bs as RowAction, bt as ActionRunResult, bu as AutomationSpec, bv as AutomationDeclared, bw as AutomationList, bx as AutomationFlipped, by as AutomationRuns, bz as RecordEvent, bA as TableWebhookDeclared, bB as TableWebhook, bC as IoExportPage, bD as TableListEntry, bE as DataHomeTable, bF as TableSyncSpec, bG as TableSyncResult, bH as TableRowCount, bI as RecordHeader, bJ as OutsideShareAnswer, bK as ViewOrderSet } from './table-kind-KMjVs-rk.cjs';
|
|
2
2
|
import { S as StoreFilter, F as FormSummary, B as BookingSummary, a as BookingAvailability, b as BookingDeclared, c as FormRoute, d as FormResults, D as DashboardSummary, e as DashboardBlock, R as RecordFilter, A as AggregateCompare, f as AggregateBucket, g as DashboardRunResult, h as StuckRow, i as AggregateMeasure, j as AggregateRow, k as Subscription, M as MySubscription, l as SubscriptionSpec, m as DigestPreview, n as SavedViewRow, o as SavedViewSpecIn, p as RowTemplateRow } from './subscription-B_WaT-kr.cjs';
|
|
3
3
|
import { b as Field, c as FieldPatch, N as NewFieldDeclaration, R as RelationNamesAnswer, d as FieldDuplicated, e as FieldProposal, T as TableProposal } from './field-snQG2jMq.cjs';
|
|
4
4
|
import { U as Uuid, f as Timestamp, g as RecordDocument, h as RecordsResult, i as RecordChange, j as RecordChangeResult, k as RecordGraphWritten, l as RecordRead, m as ReadRow, n as RecordPageSort, o as RecordPage, p as RecordKeysetPage, q as StoredRecord, r as RecordRevision, s as ReadValue, t as RecordsErrorCode, R as RecordsError, W as WriteConflict } from './record-1yDCn169.cjs';
|
|
@@ -746,6 +746,12 @@ interface RecordsClient {
|
|
|
746
746
|
* one count and one page. A record with no links answers `{ total: 0, links: [] }`.
|
|
747
747
|
*/
|
|
748
748
|
reverseLinksMany(args: ReverseLinksManyArgs): Promise<RecordsResult<Record<string, ReverseLinks>>>;
|
|
749
|
+
/**
|
|
750
|
+
* The same, through SEVERAL reverse columns in ONE call (`custom.reverse_links_many_fields`):
|
|
751
|
+
* `{ [source field id]: { [record id]: { total, links } } }`. A store without the door answers
|
|
752
|
+
* `door_absent` — ask `reverseLinksMany` per column then.
|
|
753
|
+
*/
|
|
754
|
+
reverseLinksFields(args: ReverseLinksFieldsArgs): Promise<RecordsResult<Record<string, Record<string, ReverseLinks>>>>;
|
|
749
755
|
/** Take a field off a table. Refuses the title field, the last field, and one another field reads through. */
|
|
750
756
|
fieldRetire(args: {
|
|
751
757
|
field_id: Uuid;
|
package/dist/core/index.cjs
CHANGED
|
@@ -183,6 +183,7 @@ __export(core_exports, {
|
|
|
183
183
|
isPersonStamp: () => isPersonStamp,
|
|
184
184
|
isPortalAccent: () => isPortalAccent,
|
|
185
185
|
isPortalArchiveFilter: () => isPortalArchiveFilter,
|
|
186
|
+
isRecordRemoved: () => isRecordRemoved,
|
|
186
187
|
isRecordsErr: () => isRecordsErr,
|
|
187
188
|
isRuleFilter: () => isRuleFilter,
|
|
188
189
|
isShownTo: () => isShownTo,
|
|
@@ -196,6 +197,8 @@ __export(core_exports, {
|
|
|
196
197
|
localeDateOrder: () => localeDateOrder,
|
|
197
198
|
looksLikeAnId: () => looksLikeAnId,
|
|
198
199
|
mapPgError: () => mapPgError,
|
|
200
|
+
markRecordRemoved: () => markRecordRemoved,
|
|
201
|
+
markRecordRestored: () => markRecordRestored,
|
|
199
202
|
mayDrag: () => mayDrag,
|
|
200
203
|
measureKey: () => measureKey,
|
|
201
204
|
memoryStore: () => memoryStore,
|
|
@@ -5222,6 +5225,16 @@ function announceRecordChanged(recordId) {
|
|
|
5222
5225
|
}
|
|
5223
5226
|
}
|
|
5224
5227
|
}
|
|
5228
|
+
var removed = /* @__PURE__ */ new Set();
|
|
5229
|
+
function markRecordRemoved(recordId) {
|
|
5230
|
+
removed.add(recordId);
|
|
5231
|
+
}
|
|
5232
|
+
function markRecordRestored(recordId) {
|
|
5233
|
+
removed.delete(recordId);
|
|
5234
|
+
}
|
|
5235
|
+
function isRecordRemoved(recordId) {
|
|
5236
|
+
return removed.has(recordId);
|
|
5237
|
+
}
|
|
5225
5238
|
function onRecordChanged(listener) {
|
|
5226
5239
|
listeners.add(listener);
|
|
5227
5240
|
return () => listeners.delete(listener);
|
|
@@ -5320,6 +5333,10 @@ var OWED_BY = {
|
|
|
5320
5333
|
// clone; they reach the main database when the chair applies them, after
|
|
5321
5334
|
// visionreach_w4_a_the_store_asks_before_an_agent_changes_a_table.sql (its field_declare body).
|
|
5322
5335
|
reverse_columns: "VIEWS-AND-FIELDS BL \u2014 matrx-frontend migrations/campaign/viewsfields_bl_a_link_shows_on_both_tables.sql (chair's production apply)",
|
|
5336
|
+
// SEED-ENTITY (2026-10-08): the same links through SEVERAL reverse columns in one call; applied to production
|
|
5337
|
+
// through the ledgered runner. Until `pnpm records:generate` lists it, `reverseLinksFields` asks it as an owed door
|
|
5338
|
+
// and a store without it answers `door_absent` (the caller falls back to one call per column).
|
|
5339
|
+
reverse_links_many_fields: "SEED-ENTITY \u2014 matrx-frontend migrations/campaign/seedentity_reverse_links_many_fields.sql (applied 2026-10-08)",
|
|
5323
5340
|
reverse_links_many: "VIEWS-AND-FIELDS BL \u2014 matrx-frontend migrations/campaign/viewsfields_bl_a_link_shows_on_both_tables.sql (chair's production apply)",
|
|
5324
5341
|
// Live on Matrx Main since 2026-10-06 (applied through the Supabase MCP); STORE_DOORS lists it at the
|
|
5325
5342
|
// next `pnpm records:generate`, until then `listKeyset` asks it as an owed door.
|
|
@@ -5560,6 +5577,7 @@ var DOORS = {
|
|
|
5560
5577
|
// links through one of them. Called through `owedDoor` until `pnpm records:generate` lists them.
|
|
5561
5578
|
reverseColumns: "reverse_columns",
|
|
5562
5579
|
reverseLinksMany: "reverse_links_many",
|
|
5580
|
+
reverseLinksManyFields: "reverse_links_many_fields",
|
|
5563
5581
|
homeAdd: "home_add",
|
|
5564
5582
|
recordReparent: "record_reparent",
|
|
5565
5583
|
containmentChain: "containment_chain",
|
|
@@ -6626,7 +6644,10 @@ function createRecordsClient(given) {
|
|
|
6626
6644
|
{ p_organization_id: org, p_record_id: record_id },
|
|
6627
6645
|
"recordDelete"
|
|
6628
6646
|
);
|
|
6629
|
-
if (result.ok)
|
|
6647
|
+
if (result.ok) {
|
|
6648
|
+
markRecordRemoved(record_id);
|
|
6649
|
+
announceRecordChanged(record_id);
|
|
6650
|
+
}
|
|
6630
6651
|
return result;
|
|
6631
6652
|
},
|
|
6632
6653
|
async recordRestore({ record_id }) {
|
|
@@ -6635,7 +6656,10 @@ function createRecordsClient(given) {
|
|
|
6635
6656
|
{ p_organization_id: org, p_record_id: record_id },
|
|
6636
6657
|
"recordRestore"
|
|
6637
6658
|
);
|
|
6638
|
-
if (result.ok)
|
|
6659
|
+
if (result.ok) {
|
|
6660
|
+
markRecordRestored(record_id);
|
|
6661
|
+
announceRecordChanged(record_id);
|
|
6662
|
+
}
|
|
6639
6663
|
return result;
|
|
6640
6664
|
},
|
|
6641
6665
|
async tableArchive({ table_id, chunk, includeTable }) {
|
|
@@ -7436,6 +7460,37 @@ function createRecordsClient(given) {
|
|
|
7436
7460
|
}
|
|
7437
7461
|
return ok(out);
|
|
7438
7462
|
},
|
|
7463
|
+
async reverseLinksFields(args) {
|
|
7464
|
+
const ids = [...new Set(args.record_ids.filter((id) => typeof id === "string" && id.length > 0))];
|
|
7465
|
+
const fieldIds = [...new Set(args.source_field_ids)];
|
|
7466
|
+
const out = Object.fromEntries(fieldIds.map((id) => [id, {}]));
|
|
7467
|
+
for (let f = 0; f < fieldIds.length || f === 0; f += 20) {
|
|
7468
|
+
for (let at = 0; at < ids.length; at += REVERSE_LINKS_RECORDS_PER_CALL) {
|
|
7469
|
+
const result = await owedDoor(
|
|
7470
|
+
DOORS.reverseLinksManyFields,
|
|
7471
|
+
{
|
|
7472
|
+
p_organization_id: org,
|
|
7473
|
+
p_table_id: args.table_id,
|
|
7474
|
+
p_field_ids: fieldIds.slice(f, f + 20),
|
|
7475
|
+
p_record_ids: ids.slice(at, at + REVERSE_LINKS_RECORDS_PER_CALL),
|
|
7476
|
+
p_limit: args.limit ?? 10,
|
|
7477
|
+
p_offset: args.offset ?? 0
|
|
7478
|
+
},
|
|
7479
|
+
"reverseLinksFields"
|
|
7480
|
+
);
|
|
7481
|
+
if (!result.ok) return result;
|
|
7482
|
+
for (const row of result.data ?? []) {
|
|
7483
|
+
if (!row?.record_id || !row.field_id) continue;
|
|
7484
|
+
(out[row.field_id] ??= {})[row.record_id] = {
|
|
7485
|
+
total: typeof row.total === "number" ? row.total : 0,
|
|
7486
|
+
links: Array.isArray(row.links) ? row.links : []
|
|
7487
|
+
};
|
|
7488
|
+
}
|
|
7489
|
+
}
|
|
7490
|
+
if (fieldIds.length === 0) break;
|
|
7491
|
+
}
|
|
7492
|
+
return ok(out);
|
|
7493
|
+
},
|
|
7439
7494
|
async relationNamesMatch(args) {
|
|
7440
7495
|
const distinct = [];
|
|
7441
7496
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -9704,8 +9759,8 @@ async function declareTable(client, spec) {
|
|
|
9704
9759
|
return { ok: true, data: table.data, homeId: home.data };
|
|
9705
9760
|
}
|
|
9706
9761
|
async function undo(client, tableId, homeId, name, refusal) {
|
|
9707
|
-
const
|
|
9708
|
-
if (
|
|
9762
|
+
const removed2 = await client.recordDelete({ record_id: tableId });
|
|
9763
|
+
if (removed2.ok) {
|
|
9709
9764
|
await client.recordDelete({ record_id: homeId });
|
|
9710
9765
|
return { ok: false, error: refusal };
|
|
9711
9766
|
}
|