diff --git a/src/db/models/user.rs b/src/db/models/user.rs index 054896eb..d1bec8cb 100644 --- a/src/db/models/user.rs +++ b/src/db/models/user.rs @@ -285,21 +285,13 @@ impl User { db_run! {conn: mysql { let value = UserDb::to_db(self); - // Don't use replace_into() since it wants to delete the record first. - match diesel::update(users::table) - .filter(users::uuid.eq(&self.uuid)) + diesel::insert_into(users::table) + .values(&value) + .on_conflict(diesel::dsl::DuplicatedKeys) + .do_update() .set(&value) .execute(conn) - { - Ok(1) => Ok(()), - Ok(_) => { - diesel::insert_into(users::table) - .values(value) - .execute(conn) - .map_res("Error saving user") - } - Err(e) => Err(e.into()), - }.map_res("Error updating user") + .map_res("Error saving user") } postgresql, sqlite { let value = UserDb::to_db(self);