Refactor App struct
This commit is contained in:
parent
f9692b8ddf
commit
ee7d7971be
13 changed files with 1147 additions and 163 deletions
|
|
@ -1,4 +1,5 @@
|
|||
use crate::models::Magnet;
|
||||
use crate::services::database::DatabaseService;
|
||||
use async_trait::async_trait;
|
||||
use color_eyre::eyre::Result;
|
||||
|
||||
|
|
@ -21,6 +22,6 @@ pub trait Action {
|
|||
/// Process all unprocessed magnet links and return the list of processed magnets
|
||||
async fn process_unprocessed_magnets(
|
||||
&mut self,
|
||||
db: &mut crate::db::Database,
|
||||
db_service: &mut DatabaseService,
|
||||
) -> Result<ProcessedMagnets>;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
use crate::actions::action::{Action, ProcessedMagnets};
|
||||
use crate::actions::bitmagnet::client::BitmagnetClient;
|
||||
use crate::actions::bitmagnet::config::BitmagnetConfig;
|
||||
use crate::db::{BitmagnetProcessedTable, Database};
|
||||
use crate::db::BitmagnetProcessedTable;
|
||||
use crate::services::database::DatabaseService;
|
||||
use color_eyre::eyre::Result;
|
||||
use log::{debug, warn};
|
||||
|
||||
|
|
@ -30,14 +31,17 @@ impl Action for BitmagnetAction {
|
|||
}
|
||||
|
||||
/// Process all unprocessed magnet links and return the list of processed magnets
|
||||
async fn process_unprocessed_magnets(&mut self, db: &mut Database) -> Result<ProcessedMagnets> {
|
||||
async fn process_unprocessed_magnets(
|
||||
&mut self,
|
||||
db_service: &mut DatabaseService,
|
||||
) -> Result<ProcessedMagnets> {
|
||||
let unprocessed_magnets =
|
||||
db.get_unprocessed_magnets_for_table::<BitmagnetProcessedTable>()?;
|
||||
db_service.get_unprocessed_magnets::<BitmagnetProcessedTable>()?;
|
||||
let mut processed_magnets = Vec::new();
|
||||
let mut failed_magnets = Vec::new();
|
||||
|
||||
for magnet in unprocessed_magnets {
|
||||
let tags = db.get_tags_for_magnet(magnet.id)?;
|
||||
let tags = db_service.get_tags_for_magnet(magnet.id)?;
|
||||
let tag_refs: Vec<&str> = tags.iter().map(|s| s.as_str()).collect();
|
||||
|
||||
match self
|
||||
|
|
@ -60,7 +64,7 @@ impl Action for BitmagnetAction {
|
|||
if !tags.is_empty() {
|
||||
debug!("Tags: {:?}", tags);
|
||||
}
|
||||
db.mark_magnet_processed_for_table::<BitmagnetProcessedTable>(magnet.id)?;
|
||||
db_service.mark_magnet_processed::<BitmagnetProcessedTable>(magnet.id)?;
|
||||
processed_magnets.push(magnet);
|
||||
}
|
||||
Err(e) => {
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ mod tests {
|
|||
use crate::actions::action::ProcessedMagnets;
|
||||
use crate::db::Database;
|
||||
use crate::models::Magnet;
|
||||
use crate::services::database::DatabaseService;
|
||||
use async_trait::async_trait;
|
||||
use color_eyre::eyre::{eyre, Result};
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
|
|
@ -66,7 +67,7 @@ mod tests {
|
|||
|
||||
async fn process_unprocessed_magnets(
|
||||
&mut self,
|
||||
_db: &mut Database,
|
||||
_db_service: &mut DatabaseService,
|
||||
) -> Result<ProcessedMagnets> {
|
||||
Ok(ProcessedMagnets {
|
||||
success: Vec::<Magnet>::new(),
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
use crate::actions::action::{Action, ProcessedMagnets};
|
||||
use crate::actions::transmission::client::TransmissionClient;
|
||||
use crate::actions::transmission::config::TransmissionConfig;
|
||||
use crate::db::{Database, TransmissionProcessedTable};
|
||||
use crate::db::TransmissionProcessedTable;
|
||||
use crate::services::database::DatabaseService;
|
||||
use color_eyre::eyre::Result;
|
||||
use log::{debug, warn};
|
||||
|
||||
|
|
@ -30,14 +31,17 @@ impl Action for TransmissionAction {
|
|||
}
|
||||
|
||||
/// Process all unprocessed magnet links and return the list of processed magnets
|
||||
async fn process_unprocessed_magnets(&mut self, db: &mut Database) -> Result<ProcessedMagnets> {
|
||||
async fn process_unprocessed_magnets(
|
||||
&mut self,
|
||||
db_service: &mut DatabaseService,
|
||||
) -> Result<ProcessedMagnets> {
|
||||
let unprocessed_magnets =
|
||||
db.get_unprocessed_magnets_for_table::<TransmissionProcessedTable>()?;
|
||||
db_service.get_unprocessed_magnets::<TransmissionProcessedTable>()?;
|
||||
let mut processed_magnets = Vec::new();
|
||||
let mut failed_magnets = Vec::new();
|
||||
|
||||
for magnet in unprocessed_magnets {
|
||||
let tags = db.get_tags_for_magnet(magnet.id)?;
|
||||
let tags = db_service.get_tags_for_magnet(magnet.id)?;
|
||||
let tag_refs: Vec<&str> = tags.iter().map(|s| s.as_str()).collect();
|
||||
|
||||
match self.client.submit_magnet(&magnet.link, tag_refs).await {
|
||||
|
|
@ -51,7 +55,7 @@ impl Action for TransmissionAction {
|
|||
if !tags.is_empty() {
|
||||
debug!("Tags: {:?}", tags);
|
||||
}
|
||||
db.mark_magnet_processed_for_table::<TransmissionProcessedTable>(magnet.id)?;
|
||||
db_service.mark_magnet_processed::<TransmissionProcessedTable>(magnet.id)?;
|
||||
processed_magnets.push(magnet);
|
||||
}
|
||||
Err(e) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue