belchior / sql_query_builder

Write SQL queries in a simple and composable way
https://crates.io/crates/sql_query_builder
MIT License
54 stars 5 forks source link

feat: Transaction builder #5

Closed belchior closed 1 year ago

belchior commented 1 year ago

Adds builder to contruct a transaction block. The example below creates a simple transaction string

let insert_foo = sql::Insert::new()
  .insert_into("users (login, name)")
  .values("('foo', 'Foo')");

let query = sql::Transaction::new()
  .start_transaction("")
  .insert(insert_foo)
  .commit("")
  .as_string();

let expected_query = "\
  START TRANSACTION; \
  INSERT INTO users (login, name) \
  VALUES ('foo', 'Foo'); \
  COMMIT;\
";

assert_eq!(query, expected_query);

Postgres syntax: begin command

let insert_foo = sql::Insert::new()
  .insert_into("users (login, name)")
  .values("('foo', 'Foo')");

let query = sql::Transaction::new()
  .begin("")
  .insert(insert_foo)
  .commit("")
  .as_string();

let expected_query = "\
  BEGIN; \
  INSERT INTO users (login, name) \
  VALUES ('foo', 'Foo'); \
  COMMIT;\
";

assert_eq!(query, expected_query);