UNPKG

godprotocol

Version:

A distributed computing environment for Web 4.0 — integrating AI, decentralisation, and virtual computation.

76 lines (60 loc) 1.9 kB
const addresses = new Object() const retrieve = async(args, {vm, chain})=>{ let {address, _id} = args; address = await address.literal() _id = _id && await _id.literal() let res = await vm.account.parse({address, _id, retrieve: true}) return res; } const store = async(args, {vm, chain, thread})=>{ if (!addresses) addresses = new Object() let {object} = args; let config = object.config, data, address = config.location; let id = `${address}-${config._id}` let exists = addresses[id] if(exists){ if (exists.updated >= config.updated){ return } } addresses[id] = {...config} switch(config.type){ case 'instance': if (config.methods.__store__){ let spli = vm._split_datapath(config.methods.__store__) await object.run({identifier: {value: spli[0], _id: spli[1]}, arguments:[]}, {chain, thread}) } break; case 'string': address = config.location break; case 'number': address = config.location break; case 'array': data = await object.store({store, thread}) break; case 'twain': data = await object.store({store, thread}) break; default: console.log(config, "DFAULT") data = await object.to_address() console.log(data) return; } if(!address)return; let ds = vm.account.manager.ds let folder = await ds.folder(address, {account: vm.account.physical_address}) let res = await folder.write(data || config, {replace: true}) if (config.type === 'instance'){ let class_account = config.cls.split('/').slice(0,2).join('/') let class_folder_account = await (await ds.folder(config.cls)).folder(`${vm.account.physical_address}`, {account: class_account}) await class_folder_account.write({ _id: config._id, }) } return data || config } export default store; export {retrieve}