Skip to content

Overhaul core Tracker: remove complexity (type_complexity) #1215

@josecelano

Description

@josecelano

Parent issue: #1181

After removing the core Tracker we don't need anymore functions like these:

/// Initialize the tracker dependencies.
#[allow(clippy::type_complexity)]
#[must_use]
pub fn initialize_tracker_dependencies(
    config: &Configuration,
) -> (
    Arc<Box<dyn Database>>,
    Arc<InMemoryWhitelist>,
    Arc<whitelist::authorization::WhitelistAuthorization>,
    Arc<AuthenticationService>,
    Arc<InMemoryTorrentRepository>,
    Arc<DatabasePersistentTorrentRepository>,
    Arc<TorrentsManager>,
) {
    let database = initialize_database(config);
    let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
    let whitelist_authorization = Arc::new(whitelist::authorization::WhitelistAuthorization::new(
        &config.core,
        &in_memory_whitelist.clone(),
    ));
    let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
    let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
    let authentication_service = Arc::new(service::AuthenticationService::new(&config.core, &in_memory_key_repository));
    let _keys_handler = Arc::new(KeysHandler::new(
        &db_key_repository.clone(),
        &in_memory_key_repository.clone(),
    ));
    let in_memory_torrent_repository = Arc::new(InMemoryTorrentRepository::default());
    let db_torrent_repository = Arc::new(DatabasePersistentTorrentRepository::new(&database));
    let torrents_manager = Arc::new(TorrentsManager::new(
        &config.core,
        &in_memory_torrent_repository,
        &db_torrent_repository,
    ));

    (
        database,
        in_memory_whitelist,
        whitelist_authorization,
        authentication_service,
        in_memory_torrent_repository,
        db_torrent_repository,
        torrents_manager,
    )
}

We only need to instantiate the dependencies for the services we actually need. That kind of functions were used to instantiate the tracker with all its dependencies.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions