rust_filesearch/models/
duplicate.rs

1use super::Entry;
2use serde::{Deserialize, Serialize};
3
4/// Represents a group of duplicate files
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct DuplicateGroup {
7    /// Hash of the file contents (BLAKE3)
8    pub hash: String,
9    /// Size of each file in bytes
10    pub size: u64,
11    /// Number of duplicates in this group
12    pub count: usize,
13    /// List of duplicate entries
14    pub entries: Vec<Entry>,
15    /// Total wasted space (size * (count - 1))
16    pub wasted_space: u64,
17}
18
19impl DuplicateGroup {
20    pub fn new(hash: String, size: u64, entries: Vec<Entry>) -> Self {
21        let count = entries.len();
22        let wasted_space = if count > 1 {
23            size * (count as u64 - 1)
24        } else {
25            0
26        };
27
28        Self {
29            hash,
30            size,
31            count,
32            entries,
33            wasted_space,
34        }
35    }
36}