github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/docs/diagrams/sharing-revisions.mmdc (about)

     1  sequenceDiagram
     2      %% https://mermaidjs.github.io/
     3      participant B as Bob
     4      participant A as Alice
     5      participant C as Charlie
     6  
     7      Note over B,C: io.cozy.todos/todo1<br /> revs: 1-a
     8  
     9      A-->>A: Update todo1<br />rev: 2-a
    10      A-->>A: Update todo1<br />rev: 3-a
    11  
    12      C-->>C: Update todo1<br />rev: 2-c
    13  
    14  
    15      A-->>A: Update io.cozy.shared
    16      note right of A: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a
    17  
    18      C-->>C: Update io.cozy.shared
    19      note right of C: io.cozy.todos/todo1<br /> revs: 1-a --> 2-c
    20  
    21      par Replicate to Bob
    22        A-->>B: replication: [todo1: revs: [2-a, 3-a]]
    23        B-->>B: Apply changes
    24        B-->>B: Update todo1<br />rev: 3-a
    25        B-->>B: Update io.cozy.shared
    26        note right of B: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a
    27      and Replicate to Charlie
    28        A-->>C: replication: [todo1: revs: [2-a, 3-a]]
    29        C-->>C: Apply changes
    30        C-->>C: Detect conflict for todo1: 2-a vs 2-c<br/>2-a wins
    31        C-->>C: Update todo1<br/>rev: 3-a<br/>
    32        C-->>C: Update io.cozy.shared
    33        note right of C: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a<br />1-a --> 2-c
    34      end
    35  
    36      C-->>A: replication: [todo1: revs: [2-c, 3-a]]
    37      A-->>A: Apply changes
    38      A-->>A: Detect conflict for todo1: 2-a vs 2-c<br/>2-a wins
    39      A-->>A: Update todo1<br/>rev: 3-a<br/>
    40    A-->>A: Update io.cozy.shared
    41      note right of A: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a<br />1-a --> 2-c
    42  
    43      A-->>B: replication: [todo1: revs: [2-c, 3-a]]
    44      B-->>B: Apply same treatment...
    45  
    46      Note over B,C: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a<br />1-a --> 2-c