Skip to content

BeginTransaction

Source: src/AWS/RDSData/BeginTransaction.ts

Runtime binding for rds-data:BeginTransaction — open a Data API transaction and get back a transactionId to thread through subsequent ExecuteStatement/BatchExecuteStatement calls.

Bind it to a Data-API-enabled DBCluster and its credentials secret; provide the implementation with Effect.provide(AWS.RDSData.BeginTransactionHttp). Pair with AWS.RDSData.CommitTransaction / AWS.RDSData.RollbackTransaction to finish the transaction.

// init
const beginTransaction = yield* AWS.RDSData.BeginTransaction(db.cluster, {
secret: db.secret,
database: "app",
});
const executeStatement = yield* AWS.RDSData.ExecuteStatement(db.cluster, {
secret: db.secret,
database: "app",
});
const commitTransaction = yield* AWS.RDSData.CommitTransaction(db.cluster, {
secret: db.secret,
});
// runtime
const tx = yield* beginTransaction();
yield* executeStatement({
sql: "INSERT INTO todos (id, title) VALUES (:id, :title)",
parameters: [
{ name: "id", value: { longValue: 1 } },
{ name: "title", value: { stringValue: "buy milk" } },
],
transactionId: tx.transactionId,
});
yield* commitTransaction({ transactionId: tx.transactionId! });