Hotfix - separate counter for mock exec & query

This commit is contained in:
Billy Chan 2021-11-16 17:21:44 +08:00
parent 4c147a2d24
commit f9d04fc73f
No known key found for this signature in database
GPG Key ID: A2D690CAC7DF3CC7

View File

@ -19,7 +19,8 @@ pub struct MockDatabaseConnector;
/// Defines a connection for the [MockDatabase] /// Defines a connection for the [MockDatabase]
#[derive(Debug)] #[derive(Debug)]
pub struct MockDatabaseConnection { pub struct MockDatabaseConnection {
counter: AtomicUsize, execute_counter: AtomicUsize,
query_counter: AtomicUsize,
mocker: Mutex<Box<dyn MockDatabaseTrait>>, mocker: Mutex<Box<dyn MockDatabaseTrait>>,
} }
@ -100,7 +101,8 @@ impl MockDatabaseConnection {
M: MockDatabaseTrait, M: MockDatabaseTrait,
{ {
Self { Self {
counter: AtomicUsize::new(0), execute_counter: AtomicUsize::new(0),
query_counter: AtomicUsize::new(0),
mocker: Mutex::new(Box::new(m)), mocker: Mutex::new(Box::new(m)),
} }
} }
@ -117,14 +119,14 @@ impl MockDatabaseConnection {
/// Execute the SQL statement in the [MockDatabase] /// Execute the SQL statement in the [MockDatabase]
pub fn execute(&self, statement: Statement) -> Result<ExecResult, DbErr> { pub fn execute(&self, statement: Statement) -> Result<ExecResult, DbErr> {
debug_print!("{}", statement); debug_print!("{}", statement);
let counter = self.counter.fetch_add(1, Ordering::SeqCst); let counter = self.execute_counter.fetch_add(1, Ordering::SeqCst);
self.mocker.lock().unwrap().execute(counter, statement) self.mocker.lock().unwrap().execute(counter, statement)
} }
/// Return one [QueryResult] if the query was successful /// Return one [QueryResult] if the query was successful
pub fn query_one(&self, statement: Statement) -> Result<Option<QueryResult>, DbErr> { pub fn query_one(&self, statement: Statement) -> Result<Option<QueryResult>, DbErr> {
debug_print!("{}", statement); debug_print!("{}", statement);
let counter = self.counter.fetch_add(1, Ordering::SeqCst); let counter = self.query_counter.fetch_add(1, Ordering::SeqCst);
let result = self.mocker.lock().unwrap().query(counter, statement)?; let result = self.mocker.lock().unwrap().query(counter, statement)?;
Ok(result.into_iter().next()) Ok(result.into_iter().next())
} }
@ -132,7 +134,7 @@ impl MockDatabaseConnection {
/// Return all [QueryResult]s if the query was successful /// Return all [QueryResult]s if the query was successful
pub fn query_all(&self, statement: Statement) -> Result<Vec<QueryResult>, DbErr> { pub fn query_all(&self, statement: Statement) -> Result<Vec<QueryResult>, DbErr> {
debug_print!("{}", statement); debug_print!("{}", statement);
let counter = self.counter.fetch_add(1, Ordering::SeqCst); let counter = self.query_counter.fetch_add(1, Ordering::SeqCst);
self.mocker.lock().unwrap().query(counter, statement) self.mocker.lock().unwrap().query(counter, statement)
} }