MCPcopy Create free account
hub / github.com/SeaQL/sea-orm / start_rollback

Method start_rollback

src/database/transaction.rs:198–231  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

196 // the rollback is queued and will be performed on next async operation, like returning the connection to the pool
197 #[instrument(level = "trace")]
198 fn start_rollback(&mut self) -> Result<(), DbErr> {
199 if self.open {
200 if let Some(mut conn) = self.conn.try_lock() {
201 match &mut *conn {
202 #[cfg(feature = "sqlx-mysql")]
203 InnerConnection::MySql(c) => {
204 <sqlx::MySql as sqlx::Database>::TransactionManager::start_rollback(c);
205 }
206 #[cfg(feature = "sqlx-postgres")]
207 InnerConnection::Postgres(c) => {
208 <sqlx::Postgres as sqlx::Database>::TransactionManager::start_rollback(c);
209 }
210 #[cfg(feature = "sqlx-sqlite")]
211 InnerConnection::Sqlite(c) => {
212 <sqlx::Sqlite as sqlx::Database>::TransactionManager::start_rollback(c);
213 }
214 #[cfg(feature = "mock")]
215 InnerConnection::Mock(c) => {
216 c.rollback();
217 }
218 #[cfg(feature = "proxy")]
219 InnerConnection::Proxy(c) => {
220 c.start_rollback();
221 }
222 #[allow(unreachable_patterns)]
223 _ => return Err(conn_err("Disconnected")),
224 }
225 } else {
226 //this should never happen
227 return Err(conn_err("Dropping a locked Transaction"));
228 }
229 }
230 Ok(())
231 }
232}
233
234impl Drop for DatabaseTransaction {

Callers 1

dropMethod · 0.45

Calls 2

conn_errFunction · 0.85
rollbackMethod · 0.45

Tested by

no test coverage detected