UNPKG

@baqhub/sdk

Version:

The official JavaScript SDK for the BAQ federated app platform.

62 lines (61 loc) 1.58 kB
/* eslint-disable @typescript-eslint/no-unused-vars */ import * as IO from "../../helpers/io.js"; // // Runtime model. // export class RRecordLinkClass extends IO.Type { constructor(_type) { const model = IO.dualObject({ entity: IO.string, recordId: IO.string, }, { originalEntity: IO.string, versionCreatedAt: IO.isoDate, }); super("RecordLink", model.is, model.validate, model.encode); } } function recordLink(type) { return new RRecordLinkClass(type?.RType); } function recordLinkOf(_entity, _recordId) { return new RRecordLinkClass({}); } const RAnyRecordLink = recordLink(); // // I/O. // function buildRecordLink(entity, recordId) { return { entity, recordId }; } function linkToKey(link) { return `${link.entity}+${link.recordId}`; } function isLinkedRecord(record, recordLink) { return (record.author.entity === recordLink.entity && record.id === recordLink.recordId); } function findLinkedRecord(records, link) { function isLink(record) { return isLinkedRecord(record, link); } return records.find(isLink); } function isSameRecordLink(link1, link2) { return link1.entity === link2.entity && link1.recordId === link2.recordId; } // // Exports. // export const RecordLink = { io: recordLink, ioOf: recordLinkOf, new: buildRecordLink, toKey: linkToKey, isRecord: isLinkedRecord, findRecord: findLinkedRecord, isSame: isSameRecordLink, }; export const AnyRecordLink = { io: () => RAnyRecordLink, };