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}