create update_user method on User struct

This commit is contained in:
Akulij 2025-04-27 23:55:24 +03:00
parent 345ea66f8e
commit 4bf7c214b9

View File

@ -35,6 +35,36 @@ pub struct User {
pub language_code: Option<String>,
}
macro_rules! query_call {
($func_name:ident, $self:ident, $db:ident, $return_type:ty, $body:block) => {
pub async fn $func_name<D: CallDB>(&$self, $db: &mut D)
-> Result<$return_type, Box<dyn std::error::Error>> $body
};
}
impl User {
query_call!(update_user, self, db, (), {
let db_collection = db.get_database().await.collection::<Self>("users");
db_collection
.update_one(
doc! { "_id": self._id },
doc! {
"$set": {
"first_name": &self.first_name,
"last_name": &self.last_name,
"username": &self.username,
"language_code": &self.language_code,
"is_admin": &self.is_admin,
}
},
)
.await?;
Ok(())
});
}
#[derive(Serialize, Deserialize)]
pub struct Message {
pub _id: bson::oid::ObjectId,