42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
use std::sync::Arc;
|
|
|
|
use actix_web::web;
|
|
use sqlx::postgres::PgPool;
|
|
|
|
pub mod input;
|
|
pub mod out;
|
|
|
|
use crate::settings;
|
|
use out::db::postgres::DBOutPostgresAdapter;
|
|
use out::forge::{forge_repository::ForgeRepository, forgejo::Forgejo};
|
|
|
|
use input::web::types;
|
|
|
|
pub fn load_adapters(
|
|
pool: PgPool,
|
|
settings: &settings::Settings,
|
|
) -> impl FnOnce(&mut web::ServiceConfig) {
|
|
let forgejo = Forgejo::new(
|
|
settings.forges.forgejo.url.clone(),
|
|
settings.forges.forgejo.client_id.clone(),
|
|
settings.forges.forgejo.client_secret.clone(),
|
|
);
|
|
|
|
let forge_repository_interface =
|
|
types::WebForgeRepositoryInterface::new(Arc::new(ForgeRepository::new(forgejo)));
|
|
let db = DBOutPostgresAdapter::new(pool);
|
|
let save_oauth_state_adapter: types::WebSaveOauthState =
|
|
types::WebSaveOauthState::new(Arc::new(db.clone()));
|
|
|
|
let s = types::WebSettings::new(settings.clone());
|
|
|
|
let f = move |cfg: &mut web::ServiceConfig| {
|
|
cfg.app_data(save_oauth_state_adapter);
|
|
cfg.app_data(forge_repository_interface);
|
|
cfg.app_data(s);
|
|
cfg.configure(input::web::load_ctx());
|
|
};
|
|
|
|
Box::new(f)
|
|
}
|