Skip to main content

systemprompt_runtime/context/
repositories.rs

1//! Repository accessors: the composition root builds each repository once
2//! and every consumer reaches it through `AppContext`.
3//!
4//! Copyright (c) systemprompt.io — Business Source License 1.1.
5//! See <https://systemprompt.io> for licensing details.
6
7use std::sync::Arc;
8
9use systemprompt_agent::repository::A2ARepositories;
10use systemprompt_ai::repository::AiRepositories;
11use systemprompt_analytics::repository::AnalyticsRepositories;
12use systemprompt_content::repository::ContentRepositories;
13use systemprompt_database::ServiceRepository;
14use systemprompt_evaluation::repository::experiments::EvaluationRepositories;
15use systemprompt_files::FileRepository;
16use systemprompt_marketplace::managed::ManagedRepository;
17use systemprompt_mcp::repository::McpSessionRepository;
18use systemprompt_oauth::repository::OAuthRepositories;
19use systemprompt_users::UserRepository;
20
21use super::AppContext;
22
23impl AppContext {
24    pub const fn a2a_repositories(&self) -> &Arc<A2ARepositories> {
25        &self.data.a2a_repositories
26    }
27
28    pub const fn content_repositories(&self) -> &Arc<ContentRepositories> {
29        &self.data.content_repositories
30    }
31
32    pub const fn oauth_repositories(&self) -> &Arc<OAuthRepositories> {
33        &self.data.oauth_repositories
34    }
35
36    pub const fn user_repository(&self) -> &Arc<UserRepository> {
37        &self.data.user_repository
38    }
39
40    pub const fn service_repository(&self) -> &Arc<ServiceRepository> {
41        &self.data.service_repository
42    }
43
44    pub const fn ai_repositories(&self) -> &Arc<AiRepositories> {
45        &self.data.ai_repositories
46    }
47
48    pub const fn feedback_snapshots_repository(
49        &self,
50    ) -> &Arc<systemprompt_analytics::snapshots::FeedbackSnapshotsRepository> {
51        &self.data.feedback_snapshots_repository
52    }
53
54    pub const fn feedback_facts_repository(
55        &self,
56    ) -> &Arc<systemprompt_analytics::feedback::FeedbackFactsRepository> {
57        &self.data.feedback_facts_repository
58    }
59
60    pub const fn analytics_repositories(&self) -> &Arc<AnalyticsRepositories> {
61        &self.data.analytics_repositories
62    }
63
64    pub const fn file_repository(&self) -> &Arc<FileRepository> {
65        &self.data.file_repository
66    }
67
68    pub const fn mcp_session_repository(&self) -> &Arc<McpSessionRepository> {
69        &self.data.mcp_session_repository
70    }
71
72    pub const fn managed_repository(&self) -> &Arc<ManagedRepository> {
73        &self.data.managed_repository
74    }
75
76    pub const fn evaluation_repositories(&self) -> &Arc<EvaluationRepositories> {
77        &self.data.evaluation_repositories
78    }
79}