#manga-dex #chapter #actix #data #piece #interact #eureka-mmanager

eureka-mmanager-core

The core package for the eureka-mmanager crate

1 unstable release

0.1.0 Dec 17, 2024

#1275 in Data structures

Download history 82/week @ 2024-12-11 73/week @ 2024-12-18 3/week @ 2024-12-25 8/week @ 2025-01-01 45/week @ 2025-01-08

211 downloads per month
Used in 3 crates (2 directly)

MIT/Apache

98KB
2.5K SLoC

eureka-mmanager-core

It's the core piece for eureka-mmanager and emdx crate.

Providing an ergonomic API to interact with the eureka-mmanager filesytem structure.

NOTICE: This library is still in developpement and not yet documented. Use it at your own risk

Concepts

The DirsOption struct is the base of this entire repo. And you can only do two type of action with it:

  • Push which is pushing data to the actual directories.
  • Pull which is getting or retrieving data to the actual directories.

Examples

Pulling chapter data

use eureka_mmanager_core::{
    data_pulls::{chapter::ChapterListDataPullFilterParams, IntoFiltered, Pull},
    DirsOptions,
};
use mangadex_api_schema_rust::v5::ChapterObject;
use mangadex_api_types_rust::{Language, RelationshipType};
use uuid::Uuid;

fn main() -> anyhow::Result<()> {
    // Making a `DirOptions` instance
    let options = DirsOptions::new_from_data_dir("data");
    // verify if the directories is present and create them if they not exits
    options.verify_and_init()?;
    // "Pull"ing a single chapter
    if let Ok(chapter) = Pull::<ChapterObject, _>::pull(&options, Uuid::new_v4()) {
        println!("{} exists", chapter.id);
    }
    // "Pull"ing all existing chapter
    for chapter in options
        .pull_all_chapter()?
        .flatten()
        /* you can also filter it */
        .to_filtered(ChapterListDataPullFilterParams {
            translated_languages: vec![Language::English],
            ..Default::default()
        })
    {
        println!(
            "got chapter {:?} - vol. {:?} from {:?}",
            chapter.attributes.chapter,
            chapter.attributes.volume,
            chapter
                .find_first_relationships(RelationshipType::Manga)
                .map(|rel| { rel.id })
        )
    }
    Ok(())
}

Dependencies

~12–25MB
~361K SLoC