|
|
@@ -8,7 +8,8 @@ use crate::app_error::AppError;
|
|
|
pub struct Home {
|
|
|
pub id: Uuid,
|
|
|
pub name: String,
|
|
|
- pub created_at: DateTime<Utc>
|
|
|
+ pub created_at: DateTime<Utc>,
|
|
|
+ pub is_admin: Option<bool>
|
|
|
}
|
|
|
|
|
|
impl Home {
|
|
|
@@ -16,7 +17,8 @@ impl Home {
|
|
|
Self {
|
|
|
id: Uuid::now_v7(),
|
|
|
name: name,
|
|
|
- created_at: Utc::now()
|
|
|
+ created_at: Utc::now(),
|
|
|
+ is_admin: Some(true)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -27,11 +29,12 @@ impl Home {
|
|
|
VALUES ($1, $2, $3)
|
|
|
)
|
|
|
INSERT INTO users_homes (user_id, home_id, is_admin)
|
|
|
- VALUES ($4, $1, true)",
|
|
|
+ VALUES ($4, $1, $5)",
|
|
|
self.id,
|
|
|
self.name,
|
|
|
self.created_at,
|
|
|
- user_id
|
|
|
+ user_id,
|
|
|
+ self.is_admin.unwrap_or(false)
|
|
|
)
|
|
|
.execute(db)
|
|
|
.await?;
|
|
|
@@ -58,4 +61,18 @@ impl Home {
|
|
|
Ok(())
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ pub async fn get_many(db: &PgPool, user_id: Uuid) -> Result<Vec<Home>, AppError> {
|
|
|
+ let homes = sqlx::query_as!(
|
|
|
+ Home,
|
|
|
+ "SELECT homes.*, users_homes.is_admin FROM homes
|
|
|
+ JOIN users_homes ON users_homes.home_id = homes.id
|
|
|
+ WHERE users_homes.user_id = $1",
|
|
|
+ user_id
|
|
|
+ )
|
|
|
+ .fetch_all(db)
|
|
|
+ .await?;
|
|
|
+
|
|
|
+ Ok(homes)
|
|
|
+ }
|
|
|
}
|