Execute instructions in a transaction.
Execute instructions in a transaction. For example, to add a Person row to the database and return the contents of the Person table immediately after that:
val a = run(query[Person].insert(Person(...)): ZIO[Has[DataSource], SQLException, Long] val b = run(query[Person]): ZIO[Has[DataSource], SQLException, Person] transaction(a *> b): ZIO[Has[DataSource], SQLException, Person]
The order of operations run in the case that a new connection needs to be aquired are as follows:
getDS from env, acquire-connection, set-no-autocommit(connection), put-into-fiberref(connection), op - the corresponding execute_ method which will execute and pull connection from the fiberref, remove-from-fiberref(connection), set-prev-autocommit(connection), release-conn