Skip to main content

server/
user.rs

1use crate::db::DBError;
2use cfg_if::cfg_if;
3use sqlx::Postgres;
4use sqlx::pool::PoolConnection;
5use sqlx::types::Uuid;
6mod userpool;
7
8pub struct User {
9    pub id: Uuid,
10}
11
12impl User {
13    cfg_if! {
14        if #[cfg(test)] {
15        pub async fn get_connection(&self) -> Result<PoolConnection<Postgres>, DBError> {
16            crate::db::get_connection().await
17        }
18        } else if #[cfg(not(test))] {
19        pub async fn get_connection(&self) -> Result<PoolConnection<Postgres>, DBError> {
20            userpool::get_connection(self.id).await
21        }
22        }
23    }
24}
25
26#[cfg(test)]
27impl User {
28    pub async fn commit(&self) -> Result<(), sqlx::Error> {
29        let mut conn = self.get_connection().await.unwrap();
30
31        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        .execute(&mut *conn)
41        .await?;
42
43        Ok(())
44    }
45}