systemprompt_users/repository/user/
bulk.rs1use systemprompt_identifiers::UserId;
7
8use crate::error::Result;
9use crate::models::UserStatus;
10use crate::repository::UserRepository;
11
12impl UserRepository {
13 pub async fn bulk_update_status(
14 &self,
15 user_ids: &[UserId],
16 new_status: UserStatus,
17 ) -> Result<u64> {
18 let new_status = new_status.as_str();
19 let ids: Vec<String> = user_ids.iter().map(ToString::to_string).collect();
20 let result = sqlx::query!(
21 r#"
22 UPDATE users
23 SET status = $1, updated_at = NOW()
24 WHERE id = ANY($2)
25 "#,
26 new_status,
27 &ids[..]
28 )
29 .execute(&*self.write_pool)
30 .await?;
31 Ok(result.rows_affected())
32 }
33
34 pub async fn bulk_delete(&self, user_ids: &[UserId]) -> Result<u64> {
35 let deleted_status = UserStatus::Deleted.as_str();
36 let ids: Vec<String> = user_ids.iter().map(ToString::to_string).collect();
37 let result = sqlx::query!(
38 r#"
39 UPDATE users
40 SET status = $1, updated_at = NOW()
41 WHERE id = ANY($2)
42 "#,
43 deleted_status,
44 &ids[..]
45 )
46 .execute(&*self.write_pool)
47 .await?;
48 Ok(result.rows_affected())
49 }
50}