Fix threadbuilder and change examples

This commit is contained in:
mcrakhman 2022-07-03 17:35:21 +02:00 committed by Mikhail Iudin
parent 1a1883d79a
commit fefbdbd764
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0
8 changed files with 284 additions and 286 deletions

View File

@ -14,8 +14,7 @@ changes:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: A identity: A
@ -45,8 +44,7 @@ changes:
encryptedReadKeys: [ key.Read.1 ] encryptedReadKeys: [ key.Read.1 ]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: D identity: D

View File

@ -126,7 +126,7 @@ func (t *ThreadBuilder) Parse(thread *YMLThread) {
newChange.readKey = k newChange.readKey = k
newChange.signKey = t.keychain.SigningKeys[ch.Identity] newChange.signKey = t.keychain.SigningKeys[ch.Identity]
aclChange := &pb.ACLChange{} aclChange := &pb.ACLChange{}
aclChange.Identity = newChange.Identity aclChange.Identity = ch.Identity
if len(ch.AclChanges) > 0 || ch.AclSnapshot != nil { if len(ch.AclChanges) > 0 || ch.AclSnapshot != nil {
aclChange.AclData = &pb.ACLChangeACLData{} aclChange.AclData = &pb.ACLChangeACLData{}
if ch.AclSnapshot != nil { if ch.AclSnapshot != nil {
@ -368,7 +368,8 @@ func (t *ThreadBuilder) convertPermission(perm string) pb.ACLChangeUserPermissio
func (t *ThreadBuilder) traverseFromHeads(f func(t *threadChange) error) error { func (t *ThreadBuilder) traverseFromHeads(f func(t *threadChange) error) error {
uniqMap := map[string]struct{}{} uniqMap := map[string]struct{}{}
stack := t.heads stack := make([]string, len(t.heads), 10)
copy(stack, t.heads)
for len(stack) > 0 { for len(stack) > 0 {
id := stack[len(stack)-1] id := stack[len(stack)-1]
stack = stack[:len(stack)-1] stack = stack[:len(stack)-1]

View File

@ -1,10 +1,8 @@
thread: thread:
author: A author: A
logs: changes:
- id: A.1
identity: A
records:
- id: A.1.1 - id: A.1.1
identity: A
aclSnapshot: aclSnapshot:
userStates: userStates:
- identity: A - identity: A
@ -12,8 +10,7 @@ logs:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: A identity: A
@ -21,10 +18,11 @@ logs:
encryptionKey: key.Enc.A encryptionKey: key.Enc.A
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
changes: changes:
- blockAdd: - textAppend:
id: root text: "some text"
readKey: key.Read.1 readKey: key.Read.1
- id: A.1.2 - id: A.1.2
identity: A
aclChanges: aclChanges:
- userInvite: - userInvite:
acceptKey: key.Sign.Onetime1 acceptKey: key.Sign.Onetime1
@ -38,15 +36,13 @@ logs:
encryptedReadKeys: [ key.Read.1 ] encryptedReadKeys: [ key.Read.1 ]
readKey: key.Read.1 readKey: key.Read.1
- id: A.1.3 - id: A.1.3
identity: A
changes: changes:
- blockAdd: - textAppend:
id: second text: "second"
targetId: root
readKey: key.Read.1 readKey: key.Read.1
- id: B.1
identity: B
records:
- id: B.1.1 - id: B.1.1
identity: B
aclChanges: aclChanges:
- userJoin: - userJoin:
identity: B identity: B
@ -56,19 +52,16 @@ logs:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
readKey: key.Read.1 readKey: key.Read.1
- id: B.1.2 - id: B.1.2
identity: B
changes: changes:
- blockAdd: - textAppend:
id: first text: "first"
targetId: root
readKey: key.Read.1 readKey: key.Read.1
- id: C.1
identity: C
records:
- id: C.1.1 - id: C.1.1
identity: C
changes: changes:
- blockAdd: - textAppend:
id: third text: "third"
targetId: root
readKey: key.Read.1 readKey: key.Read.1
keys: keys:
Enc: Enc:
@ -106,4 +99,5 @@ graph:
baseSnapshot: A.1.1 baseSnapshot: A.1.1
aclHeads: [B.1.1] aclHeads: [B.1.1]
treeHeads: [B.1.1] treeHeads: [B.1.1]
heads:
- "A.1.3"

View File

@ -1,10 +1,8 @@
thread: thread:
author: A author: A
logs: changes:
- id: A.1
identity: A
records:
- id: A.1.1 - id: A.1.1
identity: A
aclSnapshot: aclSnapshot:
userStates: userStates:
- identity: A - identity: A
@ -16,8 +14,7 @@ logs:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: A identity: A
@ -30,10 +27,11 @@ logs:
encryptionKey: key.Enc.B encryptionKey: key.Enc.B
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
changes: changes:
- blockAdd: - textAppend:
id: root text: "some text"
readKey: key.Read.1 readKey: key.Read.1
- id: A.1.2 - id: A.1.2
identity: A
aclChanges: aclChanges:
- userRemove: - userRemove:
removedIdentity: B removedIdentity: B
@ -41,6 +39,7 @@ logs:
identitiesLeft: [A, C] identitiesLeft: [A, C]
readKey: key.Read.2 readKey: key.Read.2
- id: A.1.3 - id: A.1.3
identity: A
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: E identity: E
@ -48,10 +47,8 @@ logs:
encryptionKey: key.Enc.E encryptionKey: key.Enc.E
encryptedReadKeys: [key.Read.1, key.Read.2] encryptedReadKeys: [key.Read.1, key.Read.2]
readKey: key.Read.2 readKey: key.Read.2
- id: B.1
identity: B
records:
- id: B.1.1 - id: B.1.1
identity: B
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: C identity: C
@ -60,6 +57,7 @@ logs:
encryptedReadKeys: [ key.Read.1 ] encryptedReadKeys: [ key.Read.1 ]
readKey: key.Read.1 readKey: key.Read.1
- id: B.1.2 - id: B.1.2
identity: B
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: D identity: D
@ -103,3 +101,6 @@ graph:
baseSnapshot: A.1.1 baseSnapshot: A.1.1
aclHeads: [A.1.2] aclHeads: [A.1.2]
treeHeads: [A.1.2] treeHeads: [A.1.2]
heads:
- "A.1.3"
- "B.1.2"

View File

@ -1,10 +1,8 @@
thread: thread:
author: A author: A
logs: changes:
- id: A.1
identity: A
records:
- id: A.1.1 - id: A.1.1
identity: A
aclSnapshot: aclSnapshot:
userStates: userStates:
- identity: A - identity: A
@ -12,8 +10,7 @@ logs:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: A identity: A
@ -21,10 +18,11 @@ logs:
encryptionKey: key.Enc.A encryptionKey: key.Enc.A
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
changes: changes:
- blockAdd: - textAppend:
id: root text: "some text"
readKey: key.Read.1 readKey: key.Read.1
- id: A.1.2 - id: A.1.2
identity: A
aclChanges: aclChanges:
- userInvite: - userInvite:
acceptKey: key.Sign.Onetime1 acceptKey: key.Sign.Onetime1
@ -33,6 +31,7 @@ logs:
permissions: writer permissions: writer
readKey: key.Read.1 readKey: key.Read.1
- id: A.1.3 - id: A.1.3
identity: A
aclChanges: aclChanges:
- userRemove: - userRemove:
removedIdentity: B removedIdentity: B
@ -40,15 +39,13 @@ logs:
identitiesLeft: [A] identitiesLeft: [A]
readKey: key.Read.2 readKey: key.Read.2
- id: A.1.4 - id: A.1.4
identity: A
changes: changes:
- blockAdd: - textAppend:
id: second text: "first"
targetId: root
readKey: key.Read.2 readKey: key.Read.2
- id: B.1
identity: B
records:
- id: B.1.1 - id: B.1.1
identity: B
aclChanges: aclChanges:
- userJoin: - userJoin:
identity: B identity: B
@ -58,10 +55,10 @@ logs:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
readKey: key.Read.1 readKey: key.Read.1
- id: B.1.2 - id: B.1.2
identity: B
changes: changes:
- blockAdd: - textAppend:
id: first text: "second"
targetId: root
readKey: key.Read.1 readKey: key.Read.1
keys: keys:
Enc: Enc:
@ -104,3 +101,6 @@ graph:
aclSnapshot: A.1.1 aclSnapshot: A.1.1
aclHeads: [A.1.3] aclHeads: [A.1.3]
treeHeads: [A.1.3] treeHeads: [A.1.3]
heads:
- "A.1.4"
- "B.1.2"

View File

@ -1,10 +1,8 @@
thread: thread:
author: A author: A
logs: changes:
- id: A.1
identity: A
records:
- id: A.1.1 - id: A.1.1
identity: A
aclSnapshot: aclSnapshot:
userStates: userStates:
- identity: A - identity: A
@ -16,8 +14,7 @@ logs:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: A identity: A
@ -30,7 +27,11 @@ logs:
encryptionKey: key.Enc.B encryptionKey: key.Enc.B
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
readKey: key.Read.1 readKey: key.Read.1
changes:
- textAppend:
text: "some text"
- id: A.1.2 - id: A.1.2
identity: A
aclSnapshot: aclSnapshot:
userStates: userStates:
- identity: A - identity: A
@ -50,8 +51,7 @@ logs:
encryptedReadKeys: [ key.Read.1 ] encryptedReadKeys: [ key.Read.1 ]
permission: admin permission: admin
snapshot: snapshot:
blocks: text: "some text"
- id: root
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: D identity: D
@ -60,6 +60,7 @@ logs:
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
readKey: key.Read.1 readKey: key.Read.1
- id: A.1.3 - id: A.1.3
identity: A
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: E identity: E
@ -67,10 +68,8 @@ logs:
encryptionKey: key.Enc.E encryptionKey: key.Enc.E
encryptedReadKeys: [key.Read.1] encryptedReadKeys: [key.Read.1]
readKey: key.Read.1 readKey: key.Read.1
- id: B.1
identity: B
records:
- id: B.1.1 - id: B.1.1
identity: B
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: C identity: C
@ -79,6 +78,7 @@ logs:
encryptedReadKeys: [ key.Read.1 ] encryptedReadKeys: [ key.Read.1 ]
readKey: key.Read.1 readKey: key.Read.1
- id: B.1.2 - id: B.1.2
identity: B
aclChanges: aclChanges:
- userAdd: - userAdd:
identity: F identity: F
@ -124,3 +124,7 @@ graph:
baseSnapshot: A.1.2 baseSnapshot: A.1.2
aclHeads: [A.1.2] aclHeads: [A.1.2]
treeHeads: [A.1.2] treeHeads: [A.1.2]
heads:
- "A.1.3"
- "B.1.2"

View File

@ -67,7 +67,7 @@ type ACLChange struct {
type PlainTextChange struct { type PlainTextChange struct {
TextAppend *struct { TextAppend *struct {
Text string `yaml:"text"` Text string `yaml:"text"`
} `yaml:"blockAdd"` } `yaml:"textAppend"`
} }
type YMLThread struct { type YMLThread struct {

View File

@ -6,7 +6,7 @@ import (
) )
func Test_YamlParse(t *testing.T) { func Test_YamlParse(t *testing.T) {
tb, _ := NewThreadBuilderFromFile("userjoinexample.yml") tb, _ := NewThreadBuilderFromFile("validsnapshotexample.yml")
gr, _ := tb.Graph() gr, _ := tb.Graph()
fmt.Println(gr) fmt.Println(gr)
} }