primate
primate copied to clipboard
add `transact` to app
add the ability to create a transaction from the app object with (in the init hook)
app.set("store", "transact", async callback => {
const { id, transaction } = await make_transaction(env);
try {
return await transaction([], stores => {
const store = stores.reduce((base, [name, store]) =>
o.extend(base, o.inflate(name, store))
, {});
return callback(store);
},
);
} catch (error) {
env.log.auto(error);
TransactionRolledBack.warn(env.log, id, error.name);
// let core handle error
throw error;
}
);
depends on #120