UNPKG

@leosprograms/vf-graphql-holochain

Version:

GraphQL schema bindings for the Holochain implementation of ValueFlows

74 lines 12.6 kB
import { camelToSnake, snakeToCamel, snakeToCamelString, reverseFormatDates, extractIds } from "../util.js"; import { decode } from "@msgpack/msgpack"; import { encodeHashToBase64 } from "@holochain/client"; import { addEntryToStore, updateLatestRevision, removeEntryFromStore } from '../store.js'; export async function createEntry(cell, entryType, payload) { const camelCaseEntryType = snakeToCamelString(entryType); // console.log('createEntry', entryType, camelCaseEntryType, reverseFormatDates(camelToSnake(payload[camelCaseEntryType]))) const result = await cell.callZome({ zome_name: 'hrea', fn_name: 'create_rea_' + entryType, payload: camelToSnake(reverseFormatDates(payload[camelCaseEntryType])), }); console.log("------------------ createEntry result ------------------", JSON.stringify(result.signed_action.hashed.content.timestamp)); const decoded = decode(result.entry.Present.entry); const entry = { [camelCaseEntryType]: { ...snakeToCamel(decoded), id: encodeHashToBase64(result.signed_action.hashed.hash), revisionId: encodeHashToBase64(result.signed_action.hashed.hash), meta: { retrievedRevision: { id: encodeHashToBase64(result.signed_action.hashed.hash), time: result.signed_action.hashed.content.timestamp, } } }, __typename: entryType.charAt(0).toUpperCase() + entryType.slice(1) + 'Response', }; console.log('createEntry result', entryType, entry[camelCaseEntryType]); addEntryToStore(entry[camelCaseEntryType].revisionId, entry[camelCaseEntryType]); updateLatestRevision(entry[camelCaseEntryType].id, entry[camelCaseEntryType]); return entry; } export async function updateEntry(cell, entryType, payload) { const camelCaseEntryType = snakeToCamelString(entryType); const updatePayload = extractIds(payload[camelCaseEntryType]); const result = await cell.callZome({ zome_name: 'hrea', fn_name: 'update_rea_' + entryType, payload: camelToSnake(reverseFormatDates(updatePayload)), }); const decoded = decode(result.entry.Present.entry); const entry = { [camelCaseEntryType]: { ...snakeToCamel(decoded), revisionId: encodeHashToBase64(result.signed_action.hashed.hash), // @ts-ignore id: encodeHashToBase64(decoded?.id) || encodeHashToBase64(result.signed_action.hashed.hash), meta: { retrievedRevision: { id: encodeHashToBase64(result.signed_action.hashed.hash), time: result.signed_action.hashed.content.timestamp, } } }, __typename: entryType.charAt(0).toUpperCase() + entryType.slice(1) + 'Response', }; addEntryToStore(entry[camelCaseEntryType].revisionId, entry[camelCaseEntryType]); updateLatestRevision(entry[camelCaseEntryType].id, entry[camelCaseEntryType]); return entry; } 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tdXRhdGlvbnMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0csT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUYsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsSUFBUyxFQUFFLFNBQWlCLEVBQUUsT0FBWTtJQUN4RSxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3hELDJIQUEySDtJQUMzSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsU0FBUyxFQUFFLE1BQU07UUFDakIsT0FBTyxFQUFFLGFBQWEsR0FBRyxTQUFTO1FBQ2xDLE9BQU8sRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztLQUN6RSxDQUFDLENBQUE7SUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLDBEQUEwRCxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDdEksTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xELE1BQU0sS0FBSyxHQUFHO1FBQ1YsQ0FBQyxrQkFBa0IsQ0FB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Q0FBQyxDQUFDLENBQUE7SUFDaEYsb0JBQW9CLENBQ2hCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsRUFDNUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQzVCLENBQUE7SUFDRCxPQUFPLEtBQUssQ0FBQTtBQUNoQixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsSUFBUyxFQUFFLFFBQWdCLEVBQUUsSUFBUztJQUNwRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsU0FBUyxFQUFFLE1BQU07UUFDakIsT0FBTyxFQUFFLGFBQWEsR0FBRyxRQUFRO1FBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVTtLQUMzQixDQUFDLENBQUM7SUFDSCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgY2FtZWxUb1NuYWtlLCBzbmFrZVRvQ2FtZWwsIHNuYWtlVG9DYW1lbFN0cmluZywgcmV2ZXJzZUZvcm1hdERhdGVzLCBleHRyYWN0SWRzIH0gZnJvbSBcIi4uL3V0aWwuanNcIlxuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSBcIkBtc2dwYWNrL21zZ3BhY2tcIlxuaW1wb3J0IHsgZW5jb2RlSGFzaFRvQmFzZTY0IH0gZnJvbSBcIkBob2xvY2hhaW4vY2xpZW50XCJcbmltcG9ydCB7IGFkZEVudHJ5VG9TdG9yZSwgdXBkYXRlTGF0ZXN0UmV2aXNpb24sIHJlbW92ZUVudHJ5RnJvbVN0b3JlIH0gZnJvbSAnLi4vc3RvcmUuanMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRW50cnkoY2VsbDogYW55LCBlbnRyeVR5cGU6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgY2FtZWxDYXNlRW50cnlUeXBlID0gc25ha2VUb0NhbWVsU3RyaW5nKGVudHJ5VHlwZSlcbiAgICAvLyBjb25zb2xlLmxvZygnY3JlYXRlRW50cnknLCBlbnRyeVR5cGUsIGNhbWVsQ2FzZUVudHJ5VHlwZSwgcmV2ZXJzZUZvcm1hdERhdGVzKGNhbWVsVG9TbmFrZShwYXlsb2FkW2NhbWVsQ2FzZUVudHJ5VHlwZV0pKSlcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjZWxsLmNhbGxab21lKHtcbiAgICAgICAgem9tZV9uYW1lOiAnaHJlYScsXG4gICAgICAgIGZuX25hbWU6ICdjcmVhdGVfcmVhXycgKyBlbnRyeVR5cGUsXG4gICAgICAgIHBheWxvYWQ6IGNhbWVsVG9TbmFrZShyZXZlcnNlRm9ybWF0RGF0ZXMocGF5bG9hZFtjYW1lbENhc2VFbnRyeVR5cGVdKSksXG4gICAgfSlcbiAgICBjb25zb2xlLmxvZyhcIi0tLS0tLS0tLS0tLS0tLS0tLSBjcmVhdGVFbnRyeSByZXN1bHQgLS0tLS0tLS0tLS0tLS0tLS0tXCIsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5zaWduZWRfYWN0aW9uLmhhc2hlZC5jb250ZW50LnRpbWVzdGFtcCkpXG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZShyZXN1bHQuZW50cnkuUHJlc2VudC5lbnRyeSlcbiAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAgW2NhbWVsQ2FzZUVudHJ5VHlwZV06IHtcbiAgICAgICAgICAgIC4uLnNuYWtlVG9DYW1lbChkZWNvZGVkKSxcbiAgICAgICAgICAgIGlkOiBlbmNvZGVIYXNoVG9CYXNlNjQocmVzdWx0LnNpZ25lZF9hY3Rpb24uaGFzaGVkLmhhc2gpLFxuICAgICAgICAgICAgcmV2aXNpb25JZDogZW5jb2RlSGFzaFRvQmFzZTY0KHJlc3VsdC5zaWduZWRfYWN0aW9uLmhhc2hlZC5oYXNoKSxcbiAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICByZXRyaWV2ZWRSZXZpc2lvbjoge1xuICAgICAgICAgICAgICAgICAgICBpZDogZW5jb2RlSGFzaFRvQmFzZTY0KHJlc3VsdC5zaWduZWRfYWN0aW9uLmhhc2hlZC5oYXNoKSxcbiAgICAgICAgICAgICAgICAgICAgdGltZTogcmVzdWx0LnNpZ25lZF9hY3Rpb24uaGFzaGVkLmNvbnRlbnQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgX190eXBlbmFtZTogZW50cnlUeXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZW50cnlUeXBlLnNsaWNlKDEpICsgJ1Jlc3BvbnNlJyxcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnY3JlYXRlRW50cnkgcmVzdWx0JywgZW50cnlUeXBlLCBlbnRyeVtjYW1lbENhc2VFbnRyeVR5cGVdKVxuICAgIFxuICAgIGFkZEVudHJ5VG9TdG9yZShlbnRyeVtjYW1lbENhc2VFbnRyeVR5cGVdLnJldmlzaW9uSWQsIGVudHJ5W2NhbWVsQ2FzZUVudHJ5VHlwZV0pXG4gICAgdXBkYXRlTGF0ZXN0UmV2aXNpb24oXG4gICAgICAgIGVudHJ5W2NhbWVsQ2FzZUVudHJ5VHlwZV0uaWQsXG4gICAgICAgIGVudHJ5W2NhbWVsQ2FzZUVudHJ5VHlwZV1cbiAgICApXG4gICAgcmV0dXJuIGVudHJ5XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVFbnRyeShjZWxsOiBhbnksIGVudHJ5VHlwZTogc3RyaW5nLCBwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBjYW1lbENhc2VFbnRyeVR5cGUgPSBzbmFrZVRvQ2FtZWxTdHJpbmcoZW50cnlUeXBlKVxuICAgIGNvbnN0IHVwZGF0ZVBheWxvYWQgPSBleHRyYWN0SWRzKHBheWxvYWRbY2FtZWxDYXNlRW50cnlUeXBlXSlcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjZWxsLmNhbGxab21lKHtcbiAgICAgICAgem9tZV9uYW1lOiAnaHJlYScsXG4gICAgICAgIGZuX25hbWU6ICd1cGRhdGVfcmVhXycgKyBlbnRyeVR5cGUsXG4gICAgICAgIHBheWxvYWQ6IGNhbWVsVG9TbmFrZShyZXZlcnNlRm9ybWF0RGF0ZXModXBkYXRlUGF5bG9hZCkpLFxuICAgIH0pXG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZShyZXN1bHQuZW50cnkuUHJlc2VudC5lbnRyeSlcbiAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAgW2NhbWVsQ2FzZUVudHJ5VHlwZV06IHtcbiAgICAgICAgICAgIC4uLnNuYWtlVG9DYW1lbChkZWNvZGVkKSxcbiAgICAgICAgICAgIHJldmlzaW9uSWQ6IGVuY29kZUhhc2hUb0Jhc2U2NChyZXN1bHQuc2lnbmVkX2FjdGlvbi5oYXNoZWQuaGFzaCksXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBpZDogZW5jb2RlSGFzaFRvQmFzZTY0KGRlY29kZWQ/LmlkKSB8fCBlbmNvZGVIYXNoVG9CYXNlNjQocmVzdWx0LnNpZ25lZF9hY3Rpb24uaGFzaGVkLmhhc2gpLFxuICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgIHJldHJpZXZlZFJldmlzaW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBlbmNvZGVIYXNoVG9CYXNlNjQocmVzdWx0LnNpZ25lZF9hY3Rpb24uaGFzaGVkLmhhc2gpLFxuICAgICAgICAgICAgICAgICAgICB0aW1lOiByZXN1bHQuc2lnbmVkX2FjdGlvbi5oYXNoZWQuY29udGVudC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBfX3R5cGVuYW1lOiBlbnRyeVR5cGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlbnRyeVR5cGUuc2xpY2UoMSkgKyAnUmVzcG9uc2UnLFxuICAgIH1cbiAgICBhZGRFbnRyeVRvU3RvcmUoZW50cnlbY2FtZWxDYXNlRW50cnlUeXBlXS5yZXZpc2lvbklkLCBlbnRyeVtjYW1lbENhc2VFbnRyeVR5cGVdKVxuICAgIHVwZGF0ZUxhdGVzdFJldmlzaW9uKFxuICAgICAgICBlbnRyeVtjYW1lbENhc2VFbnRyeVR5cGVdLmlkLFxuICAgICAgICBlbnRyeVtjYW1lbENhc2VFbnRyeVR5cGVdXG4gICAgKVxuICAgIHJldHVybiBlbnRyeVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlRW50cnkoY2VsbDogYW55LCB0eXBlTmFtZTogc3RyaW5nLCBhcmdzOiBhbnkpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjZWxsLmNhbGxab21lKHtcbiAgICAgICAgem9tZV9uYW1lOiAnaHJlYScsXG4gICAgICAgIGZuX25hbWU6ICdkZWxldGVfcmVhXycgKyB0eXBlTmFtZSxcbiAgICAgICAgcGF5bG9hZDogYXJncy5yZXZpc2lvbklkLFxuICAgIH0pO1xuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgJyArIHR5cGVOYW1lKTtcbiAgICB9XG4gICAgcmVtb3ZlRW50cnlGcm9tU3RvcmUoYXJncy5yZXZpc2lvbklkKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn0iXX0=