use chrono::{DateTime, Utc};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum HashType {
Traditional,
Het(u8),
}
#[derive(Debug, Clone)]
pub struct FileRecord {
pub id: Option<i64>,
pub filename: String,
pub hash_a: u32,
pub hash_b: u32,
pub hash_offset: u32,
pub het_hash_40: Option<(u64, u64)>,
pub het_hash_48: Option<(u64, u64)>,
pub het_hash_56: Option<(u64, u64)>,
pub het_hash_64: Option<(u64, u64)>,
pub source: Option<String>,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct ArchiveRecord {
pub id: Option<i64>,
pub archive_path: String,
pub archive_hash: Option<String>,
pub analysis_date: DateTime<Utc>,
pub mpq_version: Option<u32>,
pub file_count: Option<u32>,
}
#[allow(dead_code)]
#[derive(Debug, Clone)]
pub(super) struct ArchiveFileRecord {
pub archive_id: i64,
pub hash_a: u32,
pub hash_b: u32,
pub file_size: Option<u64>,
pub compressed_size: Option<u64>,
pub flags: Option<u32>,
pub filename_id: Option<i64>,
}
#[allow(dead_code)]
#[derive(Debug)]
pub(super) struct DatabaseStats {
pub total_filenames: usize,
pub total_archives: usize,
pub total_archive_files: usize,
pub filenames_by_source: Vec<(String, usize)>,
}