Add default servings to profile + choose servings when scheduling

This commit is contained in:
Greg Burri 2025-02-03 23:42:07 +01:00
parent d8641d4db6
commit ae6da1a5ae
13 changed files with 70 additions and 34 deletions

View file

@ -77,7 +77,7 @@ FROM [UserLoginToken] WHERE [token] = $1
pub async fn load_user(&self, user_id: i64) -> Result<Option<model::User>> {
sqlx::query_as(
"SELECT [id], [email], [name], [lang], [is_admin] FROM [User] WHERE [id] = $1",
"SELECT [id], [email], [name], [default_servings], [lang], [is_admin] FROM [User] WHERE [id] = $1",
)
.bind(user_id)
.fetch_optional(&self.pool)
@ -92,13 +92,17 @@ FROM [UserLoginToken] WHERE [token] = $1
user_id: i64,
new_email: Option<&str>,
new_name: Option<&str>,
new_default_servings: Option<u32>,
new_password: Option<&str>,
) -> Result<UpdateUserResult> {
let mut tx = self.tx().await?;
let hashed_new_password = new_password.map(|p| hash(p).unwrap());
let (email, name, hashed_password) = sqlx::query_as::<_, (String, String, String)>(
"SELECT [email], [name], [password] FROM [User] WHERE [id] = $1",
let (email, name, default_servings, hashed_password) = sqlx::query_as::<
_,
(String, String, u32, String),
>(
"SELECT [email], [name], [default_servings], [password] FROM [User] WHERE [id] = $1",
)
.bind(user_id)
.fetch_one(&mut *tx)
@ -144,13 +148,14 @@ WHERE [id] = $1
sqlx::query(
r#"
UPDATE [User]
SET [email] = $2, [name] = $3, [password] = $4
SET [email] = $2, [name] = $3, [default_servings] = $4, [password] = $5
WHERE [id] = $1
"#,
)
.bind(user_id)
.bind(new_email.unwrap_or(&email))
.bind(new_name.map(str::trim).unwrap_or(&name))
.bind(new_default_servings.unwrap_or(default_servings))
.bind(hashed_new_password.unwrap_or(hashed_password))
.execute(&mut *tx)
.await?;

View file

@ -7,6 +7,7 @@ pub struct User {
pub id: i64,
pub name: String,
pub email: String,
pub default_servings: u32,
pub lang: String,
pub is_admin: bool,
}