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(&self, user_ids: &[UserId], new_status: &str) -> Result<u64> {
14 let ids: Vec<String> = user_ids.iter().map(ToString::to_string).collect();
15 let result = sqlx::query!(
16 r#"
17 UPDATE users
18 SET status = $1, updated_at = NOW()
19 WHERE id = ANY($2)
20 "#,
21 new_status,
22 &ids[..]
23 )
24 .execute(&*self.write_pool)
25 .await?;
26 Ok(result.rows_affected())
27 }
28
29 pub async fn bulk_delete(&self, user_ids: &[UserId]) -> Result<u64> {
30 let deleted_status = UserStatus::Deleted.as_str();
31 let ids: Vec<String> = user_ids.iter().map(ToString::to_string).collect();
32 let result = sqlx::query!(
33 r#"
34 UPDATE users
35 SET status = $1, updated_at = NOW()
36 WHERE id = ANY($2)
37 "#,
38 deleted_status,
39 &ids[..]
40 )
41 .execute(&*self.write_pool)
42 .await?;
43 Ok(result.rows_affected())
44 }
45}