@valueflows/vf-graphql-holochain
Version:
GraphQL schema bindings for the Holochain implementation of ValueFlows
87 lines • 12.7 kB
JavaScript
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tdXRhdGlvbnMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFnQixrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0csT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxRixNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFTLEVBQUUsU0FBaUIsRUFBRSxPQUFZO0lBQ3hFLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDeEQsMENBQTBDO0lBQzFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0Isa0JBQWtCLGNBQWMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQztJQUNoQixJQUFJLFNBQVMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hDLFdBQVcsR0FBRztZQUNWLEtBQUssRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pELENBQUE7UUFDRCxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLFdBQVcsQ0FBQyx3QkFBd0IsR0FBRyxZQUFZLENBQUMs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QywrQkFBK0IsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN4RCxJQUFJLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN4QixlQUFlLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUNoRCxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFDRCxPQUFPO1FBQ0gsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFNBQVM7S0FDbEMsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFTLEVBQUUsUUFBZ0IsRUFBRSxJQUFTO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixTQUFTLEVBQUUsTUFBTTtRQUNqQixPQUFPLEVBQUUsYUFBYSxHQUFHLFFBQVE7UUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVO0tBQzNCLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBjYW1lbFRvU25ha2UsIHNuYWtlVG9DYW1lbCwgc25ha2VUb0NhbWVsU3RyaW5nLCByZXZlcnNlRm9ybWF0RGF0ZXMsIGV4dHJhY3RJZHMgfSBmcm9tIFwiLi4vdXRpbC5qc1wiXG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwiQG1zZ3BhY2svbXNncGFja1wiXG5pbXBvcnQgeyBlbmNvZGVIYXNoVG9CYXNlNjQgfSBmcm9tIFwiQGhvbG9jaGFpbi9jbGllbnRcIlxuaW1wb3J0IHsgZm9ybWF0UmVzSXRlbSB9IGZyb20gXCIuLi91dGlsLmpzXCJcbmltcG9ydCB7IGFkZEVudHJ5VG9TdG9yZSwgdXBkYXRlTGF0ZXN0UmV2aXNpb24sIHJlbW92ZUVudHJ5RnJvbVN0b3JlIH0gZnJvbSAnLi4vc3RvcmUuanMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRW50cnkoY2VsbDogYW55LCBlbnRyeVR5cGU6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgY2FtZWxDYXNlRW50cnlUeXBlID0gc25ha2VUb0NhbWVsU3RyaW5nKGVudHJ5VHlwZSlcbiAgICAvLyBpZiBwYXlsb2FkIGlzIG5vdCBwcmVzZW50LCByZXR1cm4gZXJyb3JcbiAgICBpZiAoIXBheWxvYWQgfHwgKCFwYXlsb2FkW2NhbWVsQ2FzZUVudHJ5VHlwZV0gJiYgIXBheWxvYWQuZXZlbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF5bG9hZCBvYmplY3Qgb3IgcHJvcGVydHkgJyR7Y2FtZWxDYXNlRW50cnlUeXBlfScgaXMgbWlzc2luZ2ApO1xuICAgIH1cbiAgICBsZXQgdHJ1ZVBheWxvYWQ7XG4gICAgaWYgKGVudHJ5VHlwZSA9PSAnZWNvbm9taWNfZXZlbnQnKSB7XG4gICAgICAgIHRydWVQYXlsb2FkID0ge1xuICAgICAgICAgICAgZXZlbnQ6IGNhbWVsVG9TbmFrZShyZXZlcnNlRm9ybWF0RGF0ZXMocGF5bG9hZC5ldmVudCkpLFxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXlsb2FkLm5ld0ludmVudG9yaWVkUmVzb3VyY2UpIHtcbiAgICAgICAgICAgIHRydWVQYXlsb2FkLm5ld19pbnZlbnRvcmllZF9yZXNvdXJjZSA9IGNhbWVsVG9TbmFrZShyZXZlcnNlRm9ybWF0RGF0ZXMocGF5bG9hZC5uZXdJbnZlbnRvcmllZFJlc291cmNlKSlcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRydWVQYXlsb2FkID0gY2FtZWxUb1NuYWtlKHJldmVyc2VGb3JtYXREYXRlcyhwYXlsb2FkW2NhbWVsQ2FzZUVudHJ5VHlwZV0pKVxuICAgIH1cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjZWxsLmNhbGxab21lKHtcbiAgICAgICAgem9tZV9uYW1lOiAnaHJlYScsXG4gICAgICAgIGZuX25hbWU6ICdjcmVhdGVfcmVhXycgKyBlbnRyeVR5cGUsXG4gICAgICAgIHBheWxvYWQ6IHRydWVQYXlsb2FkLFxuICAgIH0pXG4gICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0UmVzSXRlbShyZXMsIGVuY29kZUhhc2hUb0Jhc2U2NChyZXMuc2lnbmVkX2FjdGlvbi5oYXNoZWQuaGFzaCkpXG4gICAgaWYgKGZvcm1hdHRlZD8ucmV2aXNpb25JZCkge1xuICAgICAgICBhZGRFbnRyeVRvU3RvcmUoZm9ybWF0dGVkLnJldmlzaW9uSWQsIGZvcm1hdHRlZClcbiAgICAgICAgdXBkYXRlTGF0ZXN0UmV2aXNpb24oZm9ybWF0dGVkLmlkLCBmb3JtYXR0ZWQpXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIFtjYW1lbENhc2VFbnRyeVR5cGVdOiBmb3JtYXR0ZWQsXG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlRW50cnkoY2VsbDogYW55LCBlbnRyeVR5cGU6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgY2FtZWxDYXNlRW50cnlUeXBlID0gc25ha2VUb0NhbWVsU3RyaW5nKGVudHJ5VHlwZSlcbiAgICAgICAgaWYgKCFwYXlsb2FkIHx8ICghcGF5bG9hZFtjYW1lbENhc2VFbnRyeVR5cGVdICYmICFwYXlsb2FkLmV2ZW50ICYmICFwYXlsb2FkLnJlc291cmNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBheWxvYWQgb2JqZWN0IG9yIHByb3BlcnR5ICcke2NhbWVsQ2FzZUVudHJ5VHlwZX0nIGlzIG1pc3NpbmdgKTtcbiAgICB9XG4gICAgbGV0IHRydWVQYXlsb2FkO1xuICAgIGlmIChlbnRyeVR5cGUgPT0gJ2Vjb25vbWljX2V2ZW50Jykge1xuICAgICAgICB0cnVlUGF5bG9hZCA9IHBheWxvYWQuZXZlbnRcbiAgICB9IGVsc2UgaWYgKGVudHJ5VHlwZSA9PSAnZWNvbm9taWNfcmVzb3VyY2UnKSB7XG4gICAgICAgIHRydWVQYXlsb2FkID0gcGF5bG9hZC5yZXNvdXJjZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRydWVQYXlsb2FkID0gcGF5bG9hZFtjYW1lbENhc2VFbnRyeVR5cGVdXG4gICAgfVxuICAgIGNvbnN0IHVwZGF0ZVBheWxvYWQgPSBleHRyYWN0SWRzKHRydWVQYXlsb2FkKVxuICAgIGNvbnN0IHVwZGF0ZVBheWxvYWRXaXRoRGF0ZXMgPSByZXZlcnNlRm9ybWF0RGF0ZXModXBkYXRlUGF5bG9hZClcbiAgICBjb25zdCBzbmFrZVBheWxvYWQgPSBjYW1lbFRvU25ha2UodXBkYXRlUGF5bG9hZFdpdGhEYXRlcylcbiAgICBjb25zb2xlLmxvZyhcIlVwZGF0aW5nIGVudHJ5IHdpdGggcGF5bG9hZDpcIiwgc25ha2VQYXlsb2FkLCBlbnRyeVR5cGUsIGNhbWVsQ2FzZUVudHJ5VHlwZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgY2VsbC5jYWxsWm9tZSh7XG4gICAgICAgIHpvbWVfbmFtZTogJ2hyZWEnLFxuICAgICAgICBmbl9uYW1lOiAndXBkYXRlX3JlYV8nICsgZW50cnlUeXBlLFxuICAgICAgICBwYXlsb2FkOiBzbmFrZVBheWxvYWQsXG4gICAgfSlcblxuICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGUocmVzLmVudHJ5LlByZXNlbnQuZW50cnkpO1xuICAgIGNvbnNvbGUubG9nKFwiUmVzcG9uc2UgZnJvbSB1cGRhdGU6XCIsIGRlY29kZWQpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRSZXNJdGVtKHJlcywgZW5jb2RlSGFzaFRvQmFzZTY0KGRlY29kZWQuaWQgfHwgcmVzLnNpZ25lZF9hY3Rpb24uaGFzaGVkLmhhc2gpKVxuICAgIGNvbnNvbGUubG9nKFwiRm9ybWF0dGVkIGVudHJ5IGFmdGVyIHVwZGF0ZTpcIiwgZm9ybWF0dGVkKTtcbiAgICBpZiAoZm9ybWF0dGVkPy5yZXZpc2lvbklkKSB7XG4gICAgICAgIGFkZEVudHJ5VG9TdG9yZShmb3JtYXR0ZWQucmV2aXNpb25JZCwgZm9ybWF0dGVkKVxuICAgICAgICB1cGRhdGVMYXRlc3RSZXZpc2lvbihmb3JtYXR0ZWQuaWQsIGZvcm1hdHRlZClcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgW2NhbWVsQ2FzZUVudHJ5VHlwZV06IGZvcm1hdHRlZCxcbiAgICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVFbnRyeShjZWxsOiBhbnksIHR5cGVOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNlbGwuY2FsbFpvbWUoe1xuICAgICAgICB6b21lX25hbWU6ICdocmVhJyxcbiAgICAgICAgZm5fbmFtZTogJ2RlbGV0ZV9yZWFfJyArIHR5cGVOYW1lLFxuICAgICAgICBwYXlsb2FkOiBhcmdzLnJldmlzaW9uSWQsXG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlbGV0ZSAnICsgdHlwZU5hbWUpO1xuICAgIH1cbiAgICByZW1vdmVFbnRyeUZyb21TdG9yZShhcmdzLnJldmlzaW9uSWQpO1xuICAgIHJldHVybiB0cnVlO1xufSJdfQ==