MVFM

postgres/savepoint

Create a savepoint within a transaction for partial rollback

const app = mvfm(prelude, pg);
const prog = app({}, ($) => {
  return $.sql.begin((sql) => {
    const main = sql`UPDATE users SET name = 'Updated' WHERE id = 1`;
    const sp = sql.savepoint((sp) => [
      sp`INSERT INTO archive (name, email) VALUES ('test', 'test@test.com')`,
      sp`SELECT * FROM archive`,
    ]);
    const final_ = sql`SELECT * FROM users WHERE id = 1`;
    return [main, sp, final_];
  });
});
await fold(defaults(app, { postgres: wasmPgInterpreter }), prog);
Initializing database...