Add a Bitmagnet import action

This commit is contained in:
Marc Plano-Lesay 2025-05-01 19:32:42 +10:00
parent 8eda807ead
commit d26931f4c6
Signed by: kernald
GPG key ID: 66A41B08CC62A6CF
15 changed files with 402 additions and 10 deletions

View file

@ -1,5 +1,5 @@
use crate::models::{Magnet, NewMagnet, NewTransmissionProcessed};
use crate::schema::{magnets, transmission_processed};
use crate::models::{Magnet, NewBitmagnetProcessed, NewMagnet, NewTransmissionProcessed};
use crate::schema::{bitmagnet_processed, magnets, transmission_processed};
use crate::PostInfo;
use color_eyre::eyre::{eyre, Result, WrapErr};
use diesel::prelude::*;
@ -16,8 +16,33 @@ pub trait ProcessedTable {
fn mark_processed(conn: &mut SqliteConnection, magnet_id: i32) -> Result<()>;
}
pub struct BitmagnetProcessedTable;
pub struct TransmissionProcessedTable;
impl ProcessedTable for BitmagnetProcessedTable {
fn get_processed_ids(conn: &mut SqliteConnection) -> Result<Vec<i32>> {
bitmagnet_processed::table
.select(bitmagnet_processed::magnet_id)
.load(conn)
.wrap_err("Failed to load processed magnet IDs for Bitmagnet")
}
fn mark_processed(conn: &mut SqliteConnection, magnet_id: i32) -> Result<()> {
let now = chrono::Utc::now().naive_utc();
let new_processed = NewBitmagnetProcessed {
magnet_id,
processed_at: &now,
};
diesel::insert_into(bitmagnet_processed::table)
.values(&new_processed)
.execute(conn)
.wrap_err("Failed to mark magnet as processed by Bitmagnet")?;
Ok(())
}
}
impl ProcessedTable for TransmissionProcessedTable {
fn get_processed_ids(conn: &mut SqliteConnection) -> Result<Vec<i32>> {
transmission_processed::table