next_web_dev/manager/
database_manager.rs1use crate::autoconfigure::context::datasource_properties::DataSourceProperties;
2
3#[derive(Clone)]
4pub struct DatabaseManager {
5 rbs: rbatis::RBatis,
6 options: DataSourceProperties,
7}
8
9impl DatabaseManager {
10 pub fn new(rbs: rbatis::RBatis, options: DataSourceProperties) -> Self {
11 Self { rbs, options }
12 }
13
14 pub fn get_conn(&self) -> &rbatis::RBatis {
15 &self.rbs
16 }
17
18 pub fn options(&self) -> &DataSourceProperties {
19 &self.options
20 }
21}
22
23use crate::middleware::check_status::MiddlewareCheckStatus;
24use async_trait::async_trait;
25
26#[async_trait]
27impl MiddlewareCheckStatus for DatabaseManager {
28 async fn status(&self) -> Result<(), Box<dyn std::error::Error>> {
29 let conn = self.rbs.try_acquire_timeout(std::time::Duration::from_secs(2)).await?;
30 conn.query("SELECT 1;", vec![]).await?;
31 Ok(())
32 }
33}