UNPKG

@valueflows/vf-graphql-holochain

Version:

GraphQL schema bindings for the Holochain implementation of ValueFlows

87 lines 12.7 kB
import { camelToSnake, snakeToCamelString, reverseFormatDates, extractIds } from "../util.js"; import { decode } from "@msgpack/msgpack"; import { encodeHashToBase64 } from "@holochain/client"; import { formatResItem } from "../util.js"; import { addEntryToStore, updateLatestRevision, removeEntryFromStore } from '../store.js'; export async function createEntry(cell, entryType, payload) { const camelCaseEntryType = snakeToCamelString(entryType); // if payload is not present, return error if (!payload || (!payload[camelCaseEntryType] && !payload.event)) { throw new Error(`Payload object or property '${camelCaseEntryType}' is missing`); } let truePayload; if (entryType == 'economic_event') { truePayload = { event: camelToSnake(reverseFormatDates(payload.event)), }; if (payload.newInventoriedResource) { truePayload.new_inventoried_resource = camelToSnake(reverseFormatDates(payload.newInventoriedResource)); } } else { truePayload = camelToSnake(reverseFormatDates(payload[camelCaseEntryType])); } const res = await cell.callZome({ zome_name: 'hrea', fn_name: 'create_rea_' + entryType, payload: truePayload, }); const formatted = formatResItem(res, encodeHashToBase64(res.signed_action.hashed.hash)); if (formatted?.revisionId) { addEntryToStore(formatted.revisionId, formatted); updateLatestRevision(formatted.id, formatted); } return { [camelCaseEntryType]: formatted, }; } export async function updateEntry(cell, entryType, payload) { const camelCaseEntryType = snakeToCamelString(entryType); if (!payload || (!payload[camelCaseEntryType] && !payload.event && !payload.resource)) { throw new Error(`Payload object or property '${camelCaseEntryType}' is missing`); } let truePayload; if (entryType == 'economic_event') { truePayload = payload.event; } else if (entryType == 'economic_resource') { truePayload = payload.resource; } else { truePayload = payload[camelCaseEntryType]; } const updatePayload = extractIds(truePayload); const updatePayloadWithDates = reverseFormatDates(updatePayload); const snakePayload = camelToSnake(updatePayloadWithDates); console.log("Updating entry with payload:", snakePayload, entryType, camelCaseEntryType); const res = await cell.callZome({ zome_name: 'hrea', fn_name: 'update_rea_' + entryType, payload: snakePayload, }); const decoded = decode(res.entry.Present.entry); console.log("Response from update:", decoded); // @ts-ignore const formatted = formatResItem(res, encodeHashToBase64(decoded.id || res.signed_action.hashed.hash)); console.log("Formatted entry after update:", formatted); if (formatted?.revisionId) { addEntryToStore(formatted.revisionId, formatted); updateLatestRevision(formatted.id, formatted); } return { [camelCaseEntryType]: formatted, }; } export async function deleteEntry(cell, typeName, args) { const result = await cell.callZome({ zome_name: 'hrea', fn_name: 'delete_rea_' + typeName, payload: args.revisionId, }); if (result === undefined) { throw new Error('Failed to delete ' + typeName); } removeEntryFromStore(args.revisionId); return true; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tdXRhdGlvbnMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFnQixrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0csT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxRixNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFTLEVBQUUsU0FBaUIsRUFBRSxPQUFZO0lBQ3hFLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDeEQsMENBQTBDO0lBQzFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0Isa0JBQWtCLGNBQWMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQztJQUNoQixJQUFJLFNBQVMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hDLFdBQVcsR0FBRztZQUNWLEtBQUssRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pELENBQUE7UUFDRCxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLFdBQVcsQ0FBQyx3QkFBd0IsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQTtRQUMzRyxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixXQUFXLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvRSxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzVCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLE9BQU8sRUFBRSxhQUFhLEdBQUcsU0FBUztRQUNsQyxPQUFPLEVBQUUsV0FBVztLQUN2QixDQUFDLENBQUE7SUFDRixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDdkYsSUFBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDeEIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDaEQsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0lBQ0QsT0FBTztRQUNILENBQUMsa0JBQWtCLENBQUMsRUFBRSxTQUFTO0tBQ2xDLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsSUFBUyxFQUFFLFNBQWlCLEVBQUUsT0FBWTtJQUN4RSxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3BELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3hGLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLGtCQUFrQixjQUFjLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUM7SUFDaEIsSUFBSSxTQUFTLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNoQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtJQUMvQixDQUFDO1NBQU0sSUFBSSxTQUFTLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUMxQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQTtJQUNsQyxDQUFDO1NBQU0sQ0FBQztRQUNKLFdBQVcsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzdDLE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDaEUsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDekYsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzVCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLE9BQU8sRUFBRSxhQUFhLEdBQUcsU0FBUztRQUNsQyxPQUFPLEVBQUUsWUFBWTtLQUN4QixDQUFDLENBQUE7SUFFRixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxhQUFhO0lBQ2IsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDckcsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN4RCxJQUFJLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN4QixlQUFlLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUNoRCxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFDRCxPQUFPO1FBQ0gsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFNBQVM7S0FDbEMsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFTLEVBQUUsUUFBZ0IsRUFBRSxJQUFTO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixTQUFTLEVBQUUsTUFBTTtRQUNqQixPQUFPLEVBQUUsYUFBYSxHQUFHLFFBQVE7UUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVO0tBQzNCLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBjYW1lbFRvU25ha2UsIHNuYWtlVG9DYW1lbCwgc25ha2VUb0NhbWVsU3RyaW5nLCByZXZlcnNlRm9ybWF0RGF0ZXMsIGV4dHJhY3RJZHMgfSBmcm9tIFwiLi4vdXRpbC5qc1wiXG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwiQG1zZ3BhY2svbXNncGFja1wiXG5pbXBvcnQgeyBlbmNvZGVIYXNoVG9CYXNlNjQgfSBmcm9tIFwiQGhvbG9jaGFpbi9jbGllbnRcIlxuaW1wb3J0IHsgZm9ybWF0UmVzSXRlbSB9IGZyb20gXCIuLi91dGlsLmpzXCJcbmltcG9ydCB7IGFkZEVudHJ5VG9TdG9yZSwgdXBkYXRlTGF0ZXN0UmV2aXNpb24sIHJlbW92ZUVudHJ5RnJvbVN0b3JlIH0gZnJvbSAnLi4vc3RvcmUuanMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRW50cnkoY2VsbDogYW55LCBlbnRyeVR5cGU6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgY2FtZWxDYXNlRW50cnlUeXBlID0gc25ha2VUb0NhbWVsU3RyaW5nKGVudHJ5VHlwZSlcbiAgICAvLyBpZiBwYXlsb2FkIGlzIG5vdCBwcmVzZW50LCByZXR1cm4gZXJyb3JcbiAgICBpZiAoIXBheWxvYWQgfHwgKCFwYXlsb2FkW2NhbWVsQ2FzZUVudHJ5VHlwZV0gJiYgIXBheWxvYWQuZXZlbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF5bG9hZCBvYmplY3Qgb3IgcHJvcGVydHkgJyR7Y2FtZWxDYXNlRW50cnlUeXBlfScgaXMgbWlzc2luZ2ApO1xuICAgIH1cbiAgICBsZXQgdHJ1ZVBheWxvYWQ7XG4gICAgaWYgKGVudHJ5VHlwZSA9PSAnZWNvbm9taWNfZXZlbnQnKSB7XG4gICAgICAgIHRydWVQYXlsb2FkID0ge1xuICAgICAgICAgICAgZXZlbnQ6IGNhbWVsVG9TbmFrZShyZXZlcnNlRm9ybWF0RGF0ZXMocGF5bG9hZC5ldmVudCkpLFxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXlsb2FkLm5ld0ludmVudG9yaWVkUmVzb3VyY2UpIHtcbiAgICAgICAgICAgIHRydWVQYXlsb2FkLm5ld19pbnZlbnRvcmllZF9yZXNvdXJjZSA9IGNhbWVsVG9TbmFrZShyZXZlcnNlRm9ybWF0RGF0ZXMocGF5bG9hZC5uZXdJbnZlbnRvcmllZFJlc291cmNlKSlcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRydWVQYXlsb2FkID0gY2FtZWxUb1NuYWtlKHJldmVyc2VGb3JtYXREYXRlcyhwYXlsb2FkW2NhbWVsQ2FzZUVudHJ5VHlwZV0pKVxuICAgIH1cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjZWxsLmNhbGxab21lKHtcbiAgICAgICAgem9tZV9uYW1lOiAnaHJlYScsXG4gICAgICAgIGZuX25hbWU6ICdjcmVhdGVfcmVhXycgKyBlbnRyeVR5cGUsXG4gICAgICAgIHBheWxvYWQ6IHRydWVQYXlsb2FkLFxuICAgIH0pXG4gICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0UmVzSXRlbShyZXMsIGVuY29kZUhhc2hUb0Jhc2U2NChyZXMuc2lnbmVkX2FjdGlvbi5oYXNoZWQuaGFzaCkpXG4gICAgaWYgKGZvcm1hdHRlZD8ucmV2aXNpb25JZCkge1xuICAgICAgICBhZGRFbnRyeVRvU3RvcmUoZm9ybWF0dGVkLnJldmlzaW9uSWQsIGZvcm1hdHRlZClcbiAgICAgICAgdXBkYXRlTGF0ZXN0UmV2aXNpb24oZm9ybWF0dGVkLmlkLCBmb3JtYXR0ZWQpXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIFtjYW1lbENhc2VFbnRyeVR5cGVdOiBmb3JtYXR0ZWQsXG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlRW50cnkoY2VsbDogYW55LCBlbnRyeVR5cGU6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgY2FtZWxDYXNlRW50cnlUeXBlID0gc25ha2VUb0NhbWVsU3RyaW5nKGVudHJ5VHlwZSlcbiAgICAgICAgaWYgKCFwYXlsb2FkIHx8ICghcGF5bG9hZFtjYW1lbENhc2VFbnRyeVR5cGVdICYmICFwYXlsb2FkLmV2ZW50ICYmICFwYXlsb2FkLnJlc291cmNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBheWxvYWQgb2JqZWN0IG9yIHByb3BlcnR5ICcke2NhbWVsQ2FzZUVudHJ5VHlwZX0nIGlzIG1pc3NpbmdgKTtcbiAgICB9XG4gICAgbGV0IHRydWVQYXlsb2FkO1xuICAgIGlmIChlbnRyeVR5cGUgPT0gJ2Vjb25vbWljX2V2ZW50Jykge1xuICAgICAgICB0cnVlUGF5bG9hZCA9IHBheWxvYWQuZXZlbnRcbiAgICB9IGVsc2UgaWYgKGVudHJ5VHlwZSA9PSAnZWNvbm9taWNfcmVzb3VyY2UnKSB7XG4gICAgICAgIHRydWVQYXlsb2FkID0gcGF5bG9hZC5yZXNvdXJjZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRydWVQYXlsb2FkID0gcGF5bG9hZFtjYW1lbENhc2VFbnRyeVR5cGVdXG4gICAgfVxuICAgIGNvbnN0IHVwZGF0ZVBheWxvYWQgPSBleHRyYWN0SWRzKHRydWVQYXlsb2FkKVxuICAgIGNvbnN0IHVwZGF0ZVBheWxvYWRXaXRoRGF0ZXMgPSByZXZlcnNlRm9ybWF0RGF0ZXModXBkYXRlUGF5bG9hZClcbiAgICBjb25zdCBzbmFrZVBheWxvYWQgPSBjYW1lbFRvU25ha2UodXBkYXRlUGF5bG9hZFdpdGhEYXRlcylcbiAgICBjb25zb2xlLmxvZyhcIlVwZGF0aW5nIGVudHJ5IHdpdGggcGF5bG9hZDpcIiwgc25ha2VQYXlsb2FkLCBlbnRyeVR5cGUsIGNhbWVsQ2FzZUVudHJ5VHlwZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgY2VsbC5jYWxsWm9tZSh7XG4gICAgICAgIHpvbWVfbmFtZTogJ2hyZWEnLFxuICAgICAgICBmbl9uYW1lOiAndXBkYXRlX3JlYV8nICsgZW50cnlUeXBlLFxuICAgICAgICBwYXlsb2FkOiBzbmFrZVBheWxvYWQsXG4gICAgfSlcblxuICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGUocmVzLmVudHJ5LlByZXNlbnQuZW50cnkpO1xuICAgIGNvbnNvbGUubG9nKFwiUmVzcG9uc2UgZnJvbSB1cGRhdGU6XCIsIGRlY29kZWQpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRSZXNJdGVtKHJlcywgZW5jb2RlSGFzaFRvQmFzZTY0KGRlY29kZWQuaWQgfHwgcmVzLnNpZ25lZF9hY3Rpb24uaGFzaGVkLmhhc2gpKVxuICAgIGNvbnNvbGUubG9nKFwiRm9ybWF0dGVkIGVudHJ5IGFmdGVyIHVwZGF0ZTpcIiwgZm9ybWF0dGVkKTtcbiAgICBpZiAoZm9ybWF0dGVkPy5yZXZpc2lvbklkKSB7XG4gICAgICAgIGFkZEVudHJ5VG9TdG9yZShmb3JtYXR0ZWQucmV2aXNpb25JZCwgZm9ybWF0dGVkKVxuICAgICAgICB1cGRhdGVMYXRlc3RSZXZpc2lvbihmb3JtYXR0ZWQuaWQsIGZvcm1hdHRlZClcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgW2NhbWVsQ2FzZUVudHJ5VHlwZV06IGZvcm1hdHRlZCxcbiAgICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVFbnRyeShjZWxsOiBhbnksIHR5cGVOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNlbGwuY2FsbFpvbWUoe1xuICAgICAgICB6b21lX25hbWU6ICdocmVhJyxcbiAgICAgICAgZm5fbmFtZTogJ2RlbGV0ZV9yZWFfJyArIHR5cGVOYW1lLFxuICAgICAgICBwYXlsb2FkOiBhcmdzLnJldmlzaW9uSWQsXG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlbGV0ZSAnICsgdHlwZU5hbWUpO1xuICAgIH1cbiAgICByZW1vdmVFbnRyeUZyb21TdG9yZShhcmdzLnJldmlzaW9uSWQpO1xuICAgIHJldHVybiB0cnVlO1xufSJdfQ==