use crate::domain::error::DomainResult;
use crate::domain::tag::Tag;
use std::collections::HashSet;
use std::fmt::Debug;
use std::path::PathBuf;
pub struct BookmarkImportData {
pub url: String,
pub title: String,
pub content: String,
pub tags: HashSet<Tag>,
}
#[derive(Debug, Clone)]
pub struct FileImportData {
pub name: String, pub tags: HashSet<Tag>, pub content_type: String, pub content: String, pub file_path: PathBuf, pub file_mtime: i64, pub file_hash: String, }
#[derive(Debug, Clone)]
pub struct ImportOptions {
pub update: bool, pub delete_missing: bool, pub dry_run: bool, pub verbose: bool, }
pub trait ImportRepository: Send + Sync + Debug {
fn import_json_bookmarks(&self, path: &str) -> DomainResult<Vec<BookmarkImportData>>;
fn import_text_documents(&self, path: &str) -> DomainResult<Vec<BookmarkImportData>>;
fn import_files(
&self,
paths: &[String],
options: &ImportOptions,
) -> DomainResult<Vec<FileImportData>>;
}