Our Personal Data Server from scratch!
tranquil.farm
oauth
atproto
pds
rust
postgresql
objectstorage
fun
1mod backlink;
2mod backup;
3mod blob;
4mod delegation;
5mod event_notifier;
6mod infra;
7mod oauth;
8mod repo;
9mod session;
10mod sso;
11mod user;
12
13use sqlx::PgPool;
14use std::sync::Arc;
15
16pub use backlink::PostgresBacklinkRepository;
17pub use backup::PostgresBackupRepository;
18pub use blob::PostgresBlobRepository;
19pub use delegation::PostgresDelegationRepository;
20pub use event_notifier::PostgresRepoEventNotifier;
21pub use infra::PostgresInfraRepository;
22pub use oauth::PostgresOAuthRepository;
23pub use repo::PostgresRepoRepository;
24pub use session::PostgresSessionRepository;
25pub use sso::PostgresSsoRepository;
26use tranquil_db_traits::{
27 BacklinkRepository, BackupRepository, BlobRepository, DelegationRepository, InfraRepository,
28 OAuthRepository, RepoEventNotifier, RepoRepository, SessionRepository, SsoRepository,
29 UserRepository,
30};
31pub use user::PostgresUserRepository;
32
33pub struct PostgresRepositories {
34 pub pool: PgPool,
35 pub user: Arc<dyn UserRepository>,
36 pub oauth: Arc<dyn OAuthRepository>,
37 pub session: Arc<dyn SessionRepository>,
38 pub delegation: Arc<dyn DelegationRepository>,
39 pub repo: Arc<dyn RepoRepository>,
40 pub blob: Arc<dyn BlobRepository>,
41 pub infra: Arc<dyn InfraRepository>,
42 pub backup: Arc<dyn BackupRepository>,
43 pub backlink: Arc<dyn BacklinkRepository>,
44 pub sso: Arc<dyn SsoRepository>,
45 pub event_notifier: Arc<dyn RepoEventNotifier>,
46}
47
48impl PostgresRepositories {
49 pub fn new(pool: PgPool) -> Self {
50 Self {
51 pool: pool.clone(),
52 user: Arc::new(PostgresUserRepository::new(pool.clone())),
53 oauth: Arc::new(PostgresOAuthRepository::new(pool.clone())),
54 session: Arc::new(PostgresSessionRepository::new(pool.clone())),
55 delegation: Arc::new(PostgresDelegationRepository::new(pool.clone())),
56 repo: Arc::new(PostgresRepoRepository::new(pool.clone())),
57 blob: Arc::new(PostgresBlobRepository::new(pool.clone())),
58 infra: Arc::new(PostgresInfraRepository::new(pool.clone())),
59 backup: Arc::new(PostgresBackupRepository::new(pool.clone())),
60 backlink: Arc::new(PostgresBacklinkRepository::new(pool.clone())),
61 sso: Arc::new(PostgresSsoRepository::new(pool.clone())),
62 event_notifier: Arc::new(PostgresRepoEventNotifier::new(pool)),
63 }
64 }
65}