Skip to content

Commit

Permalink
Add --difference to resolve-state tool
Browse files Browse the repository at this point in the history
  • Loading branch information
neilalexander committed Jun 13, 2022
1 parent 89d2ada commit 0a7f7dc
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions cmd/resolve-state/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ import (

var roomVersion = flag.String("roomversion", "5", "the room version to parse events as")
var filterType = flag.String("filtertype", "", "the event types to filter on")
var difference = flag.Bool("difference", false, "whether to calculate the difference between snapshots")

// nolint:gocyclo
func main() {
ctx := context.Background()
cfg := setup.ParseFlags(true)
Expand Down Expand Up @@ -64,6 +66,58 @@ func main() {
RoomVersion: gomatrixserverlib.RoomVersion(*roomVersion),
})

if *difference {
if len(snapshotNIDs) != 2 {
panic("need exactly two state snapshot NIDs to calculate difference")
}

removed, added, err := stateres.DifferenceBetweeenStateSnapshots(ctx, snapshotNIDs[0], snapshotNIDs[1])
if err != nil {
panic(err)
}

var eventNIDs []types.EventNID
for _, entry := range append(removed, added...) {
eventNIDs = append(eventNIDs, entry.EventNID)
}

eventEntries, err := roomserverDB.Events(ctx, eventNIDs)
if err != nil {
panic(err)
}

events := make(map[types.EventNID]*gomatrixserverlib.Event, len(eventEntries))
for _, entry := range eventEntries {
events[entry.EventNID] = entry.Event
}

if len(removed) > 0 {
fmt.Println("Removed:")
for _, r := range removed {
event := events[r.EventNID]
fmt.Println()
fmt.Printf("* %s %s %q\n", event.EventID(), event.Type(), *event.StateKey())
fmt.Printf(" %s\n", string(event.Content()))
}
}

if len(removed) > 0 && len(added) > 0 {
fmt.Println()
}

if len(added) > 0 {
fmt.Println("Added:")
for _, a := range added {
event := events[a.EventNID]
fmt.Println()
fmt.Printf("* %s %s %q\n", event.EventID(), event.Type(), *event.StateKey())
fmt.Printf(" %s\n", string(event.Content()))
}
}

return
}

var stateEntries []types.StateEntry
for _, snapshotNID := range snapshotNIDs {
var entries []types.StateEntry
Expand Down

0 comments on commit 0a7f7dc

Please sign in to comment.