1
use crate::db::DBError;
2
use cfg_if::cfg_if;
3
use sqlx::Postgres;
4
use sqlx::pool::PoolConnection;
5
use sqlx::types::Uuid;
6
mod userpool;
7

            
8
pub struct User {
9
    pub id: Uuid,
10
}
11

            
12
impl User {
13
    cfg_if! {
14
        if #[cfg(test)] {
15
1260
        pub async fn get_connection(&self) -> Result<PoolConnection<Postgres>, DBError> {
16
840
            crate::db::get_connection().await
17
840
        }
18
        } else if #[cfg(not(test))] {
19
238
        pub async fn get_connection(&self) -> Result<PoolConnection<Postgres>, DBError> {
20
68
            userpool::get_connection(self.id).await
21
68
        }
22
        }
23
    }
24
}
25

            
26
#[cfg(test)]
27
impl User {
28
171
    pub async fn commit(&self) -> Result<(), sqlx::Error> {
29
114
        let mut conn = self.get_connection().await.unwrap();
30

            
31
114
        sqlx::query!(
32
            "INSERT INTO users (
33
                id, user_name, email, photo, verified, user_password, user_role, db_name, created_at
34
            ) VALUES (
35
                $1, 'Test User', 'test@example.com', 'default.png',
36
                FALSE, 'password123', 'user', 'database', NOW()
37
            )",
38
            self.id,
39
        )
40
114
        .execute(&mut *conn)
41
114
        .await?;
42

            
43
114
        Ok(())
44
114
    }
45
}