systemprompt_users/repository/
mod.rs1mod api_key;
14mod banned_ip;
15mod device_cert;
16mod federated_identity;
17mod rate_limit_bucket;
18mod user;
19
20pub use api_key::CreateApiKeyParams;
21pub use banned_ip::{
22 BanDuration, BanIpParams, BanIpWithMetadataParams, BannedIp, BannedIpRepository,
23};
24pub use device_cert::EnrollDeviceCertParams;
25pub use rate_limit_bucket::UserRateLimitBucketRepository;
26pub use user::{MERGE_EXCLUDED_SECURITY_TABLES, MergeResult, UpdateUserParams};
27
28use crate::error::Result;
29use sqlx::PgPool;
30use std::sync::Arc;
31use systemprompt_database::DbPool;
32
33const MAX_PAGE_SIZE: i64 = 100;
34
35#[derive(Debug, Clone)]
36pub struct UserRepository {
37 pool: Arc<PgPool>,
38 write_pool: Arc<PgPool>,
39}
40
41impl UserRepository {
42 pub fn new(db: &DbPool) -> Result<Self> {
43 let pool = db.pool_arc()?;
44 let write_pool = db.write_pool_arc()?;
45 Ok(Self { pool, write_pool })
46 }
47}