use super::version::Version;
use async_trait::async_trait;
use serde::{Deserialize, Serialize};
pub mod manager;
#[async_trait]
pub trait Manager {
async fn find_all_collection_versions_by_mpath_and_publication(
&self,
mpath: &str,
publication: &str,
) -> anyhow::Result<Vec<Version>>;
}
#[async_trait]
pub trait TxManager {
async fn insert_bulk(&mut self, library_changes: Vec<LibraryChange>) -> anyhow::Result<()>;
}
#[derive(sqlx::FromRow, Deserialize, Serialize, Debug)]
pub struct LibraryChange {
pub publication_version_id: String,
pub status: i64,
pub library_mpath: String,
}
impl LibraryChange {
#[must_use]
pub const fn new(publication_version_id: String, status: i64, library_mpath: String) -> Self {
Self {
publication_version_id,
status,
library_mpath,
}
}
}