mod agents;
mod challenge_review_records;
mod challenges;
mod evaluation_jobs;
mod leaderboard;
mod maintenance;
mod pioneer_codes;
mod sessions;
mod solution_submissions;
use sqlx::PgPool;
pub use agents::AgentsRepository;
pub use challenge_review_records::ChallengeReviewRecordsRepository;
pub use challenges::ChallengesRepository;
pub use evaluation_jobs::EvaluationJobsRepository;
pub use leaderboard::LeaderboardRepository;
pub use maintenance::MaintenanceRepository;
pub use pioneer_codes::PioneerCodesRepository;
pub use sessions::SessionsRepository;
pub use solution_submissions::SolutionSubmissionsRepository;
pub use crate::db::agents::{AgentRecord, AuthenticatedAgent, RegisterAgentInput};
pub use crate::db::challenge_creation::{
AdminChallengePrivateAssetRecord, BeginChallengeReviewRecordValidationInput,
ChallengePrivateAssetPurgeRecord, ChallengePrivateAssetRecord, ChallengeReviewRecordRecord,
ChallengeReviewValidationRecord, ClaimedChallengeReviewRecordForPublish,
CreateChallengePrivateAssetInput, CreateChallengeReviewRecordAuditEventInput,
CreateChallengeReviewRecordInput, FinishChallengeReviewRecordValidationInput,
PublishArchiveChallengeReviewRecordInput, PublishNewChallengeReviewRecordInput,
};
pub use crate::db::challenges::{
AdminChallengeListItemRecord, ChallengeCatalogFilters, ChallengeMoltbookDiscussionRecord,
ChallengeRecord, ChallengeShortlistRecord, ChallengeShortlistRevisionRecord,
ChallengeShortlistedAgentRecord, CreateChallengeShortlistRevisionInput,
CreatorChallengeParticipantRecord, CreatorChallengeParticipantsRecord,
CreatorChallengeStatsRecord, PublishChallengeInput, PublishChallengeRecord,
PublishedChallengeList, PublishedChallengeListItemRecord,
};
pub use crate::db::evaluation_jobs::{
EvaluationJobRecord, QueueEvaluationJobInput, RunnerJobClaimRecord,
};
pub use crate::db::evaluation_policy::PublishedChallengeAdmission;
pub use crate::db::evaluations::{MarkEvaluationStartedInput, PersistedEvaluationResult};
pub use crate::db::leaderboard::{LeaderboardMetricEntry, LeaderboardRecord};
pub use crate::db::maintenance::{HeartbeatPayload, ServiceHeartbeatRecord, StaleJobReapResult};
pub use crate::db::pioneer_codes::{
CreatePioneerCodeInput, PioneerCodeRecord, PioneerCodeRegistrationKind, PioneerCodeUseRecord,
RevokePioneerCodeOutcome,
};
pub use crate::db::sessions::{
AdminServiceTokenRecord, AuthenticatedAdminServiceToken, AuthenticatedCreatorApiToken,
AuthenticatedHumanSession, ConsumedGithubSignInState, CreateAdminServiceTokenInput,
CreateCreatorApiTokenInput, CreateGithubSignInStateInput, CreateHumanSessionInput,
CreatorApiTokenRecord, DeleteHumanAccountOutcome, HumanRecord, ResolveGithubHumanInput,
};
pub use crate::db::solution_submissions::{
AdminSolutionSubmissionListItemRecord, CreateSolutionSubmissionInput,
PublicObserverStatsRecord, PublicSolutionSubmissionListItemRecord,
SolutionSubmissionQuotaAdmission, SolutionSubmissionRecord,
};
#[derive(Debug, Clone)]
pub struct Repositories {
pool: PgPool,
}
impl Repositories {
pub fn new(pool: &PgPool) -> Self {
Self { pool: pool.clone() }
}
pub fn agents(&self) -> AgentsRepository<'_> {
AgentsRepository { pool: &self.pool }
}
pub fn challenges(&self) -> ChallengesRepository<'_> {
ChallengesRepository { pool: &self.pool }
}
pub fn challenge_review_records(&self) -> ChallengeReviewRecordsRepository<'_> {
ChallengeReviewRecordsRepository { pool: &self.pool }
}
pub fn solution_submissions(&self) -> SolutionSubmissionsRepository<'_> {
SolutionSubmissionsRepository { pool: &self.pool }
}
pub fn evaluation_jobs(&self) -> EvaluationJobsRepository<'_> {
EvaluationJobsRepository { pool: &self.pool }
}
pub fn leaderboard(&self) -> LeaderboardRepository<'_> {
LeaderboardRepository { pool: &self.pool }
}
pub fn pioneer_codes(&self) -> PioneerCodesRepository<'_> {
PioneerCodesRepository { pool: &self.pool }
}
pub fn sessions(&self) -> SessionsRepository<'_> {
SessionsRepository { pool: &self.pool }
}
pub fn maintenance(&self) -> MaintenanceRepository<'_> {
MaintenanceRepository { pool: &self.pool }
}
}