Our Personal Data Server from scratch! tranquil.farm
oauth atproto pds rust postgresql objectstorage fun
at main 65 lines 2.4 kB view raw
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}