| 124 | } |
| 125 | |
| 126 | pub async fn update(u: User) -> Result<User, Error> { |
| 127 | u.validate()?; |
| 128 | |
| 129 | let u: User = diesel::update(user::dsl::user.find(&u.id)) |
| 130 | .set(( |
| 131 | user::updated_at.eq(Utc::now()), |
| 132 | user::is_admin.eq(&u.is_admin), |
| 133 | user::is_active.eq(&u.is_active), |
| 134 | user::email.eq(&u.email), |
| 135 | user::email_verified.eq(&u.email_verified), |
| 136 | user::note.eq(&u.note), |
| 137 | user::external_id.eq(&u.external_id), |
| 138 | )) |
| 139 | .get_result(&mut get_async_db_conn().await?) |
| 140 | .await |
| 141 | .map_err(|e| Error::from_diesel(e, u.id.to_string()))?; |
| 142 | info!(user_id = %u.id, "User updated"); |
| 143 | Ok(u) |
| 144 | } |
| 145 | |
| 146 | pub async fn set_password_hash(id: &Uuid, hash: &str) -> Result<User, Error> { |
| 147 | let u: User = diesel::update(user::dsl::user.find(&fields::Uuid::from(id))) |