1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! Describe changes / mutations to data
//! Deprecated in favor or Commit

/// Individual change to a resource. Unvalidated.
pub struct DeltaLine {
    pub method: String,
    pub property: String,
    pub value: String,
}

impl DeltaLine {
    /// Creates a single, unvalidated Delta
    pub fn new(method: String, property: String, value: String) -> DeltaLine {
        DeltaLine {
            method,
            property,
            value,
        }
    }
}

/// Describes a change to an atom.
/// Deprecated in favor or Commit
pub struct DeltaDeprecated {
    // The set of changes
    pub lines: Vec<DeltaLine>,
    // Who issued the changes
    pub actor: String,
    pub subject: String,
}

// Should a delta only contain changes to a _single resource_?
// That would make things easier regarding hashes.
impl DeltaDeprecated {
    /// Creates a single, unvalidated Delta
    // pub fn new() -> Delta {
    //     Delta {
    //         lines: Vec::new(),
    //         actor: String::from("_:localActor"),
    //     }
    // }

    pub fn new_from_lines(subject: String, lines: Vec<DeltaLine>) -> DeltaDeprecated {
        DeltaDeprecated {
            subject,
            lines,
            actor: String::from("_:localActor"),
        }
    }
}

impl Default for DeltaDeprecated {
    /// Creates a single, unvalidated Delta
    fn default() -> Self {
        DeltaDeprecated {
            subject: "Default".into(),
            lines: Vec::new(),
            actor: String::from("_:localActor"),
        }
    }
}