systemprompt_api/repository/
gateway.rs1use std::sync::Arc;
8
9use systemprompt_ai::repository::{
10 AiGatewayPolicyRepository, AiQuotaBucketRepository, AiRequestPayloadRepository,
11 AiRequestRepository, AiSafetyFindingRepository,
12};
13use systemprompt_database::DbPool;
14use systemprompt_traits::DynContextMaterializer;
15
16#[derive(Clone)]
17pub struct GatewayRepositories {
18 pub quota_buckets: AiQuotaBucketRepository,
19 pub requests: Arc<AiRequestRepository>,
20 pub payloads: Arc<AiRequestPayloadRepository>,
21 pub safety_findings: AiSafetyFindingRepository,
22 pub gateway_policies: AiGatewayPolicyRepository,
23 pub context_materializer: DynContextMaterializer,
24}
25
26impl std::fmt::Debug for GatewayRepositories {
27 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
28 f.debug_struct("GatewayRepositories")
29 .finish_non_exhaustive()
30 }
31}
32
33impl GatewayRepositories {
34 pub fn new(
35 db: &DbPool,
36 context_materializer: DynContextMaterializer,
37 ) -> Result<Self, systemprompt_ai::error::RepositoryError> {
38 Ok(Self {
39 quota_buckets: AiQuotaBucketRepository::new(db)?,
40 requests: Arc::new(AiRequestRepository::new(db)?),
41 payloads: Arc::new(AiRequestPayloadRepository::new(db)?),
42 safety_findings: AiSafetyFindingRepository::new(db)?,
43 gateway_policies: AiGatewayPolicyRepository::new(db)?,
44 context_materializer,
45 })
46 }
47}