Skip to content

database transaction support in typescript #1847

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 17 commits into from
Apr 9, 2025
Merged

Conversation

fredr
Copy link
Member

@fredr fredr commented Apr 2, 2025

Adds support for transactions in runtimes/core and runtimes/js

We should probably merge encoredev/rust-postgres#1 and update Cargo.toml again. (suggested that change upstream as well sfackler/rust-postgres#1230)

@fredr fredr requested a review from eandre April 2, 2025 14:05
@fredr fredr self-assigned this Apr 2, 2025
@fredr fredr requested a review from Copilot April 2, 2025 14:06
@encore-cla
Copy link

encore-cla bot commented Apr 2, 2025

All committers have signed the CLA.

Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds support for database transactions in both the JavaScript and Rust runtimes. Key changes include:

  • Introducing transaction methods (begin, commit, rollback, and savepoint) in the JavaScript bindings.
  • Implementing the Rust-side transaction logic and exposing it via the core SQLDB modules.
  • Updating Cargo.toml to use a different branch for tokio-postgres and postgres-protocol.

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
runtimes/js/src/sqldb.rs Adds transaction support with new async methods (begin, commit, rollback, savepoint) in the SQLDatabase API.
runtimes/js/encore.dev/storage/sqldb/database.ts Revises the database API to integrate transactions and improve documentation.
runtimes/core/src/sqldb/transaction.rs Introduces the Rust implementation for transactions including transaction lifecycle management.
runtimes/core/src/sqldb/mod.rs Exposes the new transaction module in the core SQLDB module.
runtimes/core/src/sqldb/client.rs Updates the client API to support beginning new transactions.
Cargo.toml Updates dependency branches for tokio-postgres and postgres-protocol.
Comments suppressed due to low confidence (1)

runtimes/js/src/sqldb.rs:173

  • [nitpick] Consider refactoring this pattern to avoid the explicit use of deref_mut() for improved readability; matching directly on the locked Option may be clearer.
if let Some(ref mut tx) = self.tx.lock().await.deref_mut() {

@fredr fredr force-pushed the fredr/ts-db-transactions branch from 17c5042 to e258738 Compare April 3, 2025 12:03
@fredr fredr force-pushed the fredr/ts-db-transactions branch from e0fd33e to 3b1ed1b Compare April 8, 2025 13:37
@fredr fredr merged commit ed77335 into main Apr 9, 2025
4 checks passed
@fredr fredr deleted the fredr/ts-db-transactions branch April 9, 2025 07:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants