mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-20 10:33:41 -05:00
hicli/sync: fix processing space events
This commit is contained in:
parent
e0f107f028
commit
572ef41b80
2 changed files with 24 additions and 7 deletions
|
@ -69,13 +69,15 @@ const (
|
|||
revalidateAllParentsOfRoomQuery = revalidateAllParents + ` AND child_id=$1`
|
||||
revalidateSpecificParentQuery = revalidateAllParents + ` AND space_id=$1 AND child_id=$2`
|
||||
clearSpaceChildrenQuery = `
|
||||
UPDATE space_edge SET child_event_rowid=NULL, "order"=NULL, suggested=false
|
||||
UPDATE space_edge SET child_event_rowid=NULL, "order"='', suggested=false
|
||||
WHERE space_id=$1
|
||||
`
|
||||
clearSpaceParentsQuery = `
|
||||
UPDATE space_edge SET parent_event_rowid=NULL, canonical=false, parent_validated=false
|
||||
WHERE child_id=$1
|
||||
`
|
||||
removeSpaceChildQuery = clearSpaceChildrenQuery + ` AND child_id=$2`
|
||||
removeSpaceParentQuery = clearSpaceParentsQuery + ` AND space_id=$2`
|
||||
deleteEmptySpaceEdgeRowsQuery = `
|
||||
DELETE FROM space_edge WHERE child_event_rowid IS NULL AND parent_event_rowid IS NULL
|
||||
`
|
||||
|
@ -139,8 +141,13 @@ func (seq *SpaceEdgeQuery) SetChildren(ctx context.Context, spaceID id.RoomID, c
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
|
||||
} else if len(removedChildren) > 0 {
|
||||
for _, child := range removedChildren {
|
||||
err := seq.Exec(ctx, removeSpaceChildQuery, spaceID, child)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(removedChildren) > 0 {
|
||||
err := seq.Exec(ctx, deleteEmptySpaceEdgeRowsQuery, spaceID)
|
||||
|
@ -152,7 +159,7 @@ func (seq *SpaceEdgeQuery) SetChildren(ctx context.Context, spaceID id.RoomID, c
|
|||
return nil
|
||||
}
|
||||
query, params := massInsertSpaceChildBuilder.Build([1]any{spaceID}, children)
|
||||
return seq.Exec(ctx, query, params)
|
||||
return seq.Exec(ctx, query, params...)
|
||||
}
|
||||
|
||||
func (seq *SpaceEdgeQuery) SetParents(ctx context.Context, childID id.RoomID, parents []SpaceParentEntry, removedParents []id.RoomID, clear bool) error {
|
||||
|
@ -161,6 +168,13 @@ func (seq *SpaceEdgeQuery) SetParents(ctx context.Context, childID id.RoomID, pa
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else if len(removedParents) > 0 {
|
||||
for _, parent := range removedParents {
|
||||
err := seq.Exec(ctx, removeSpaceParentQuery, childID, parent)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(removedParents) > 0 {
|
||||
err := seq.Exec(ctx, deleteEmptySpaceEdgeRowsQuery)
|
||||
|
@ -172,7 +186,7 @@ func (seq *SpaceEdgeQuery) SetParents(ctx context.Context, childID id.RoomID, pa
|
|||
return nil
|
||||
}
|
||||
query, params := massInsertSpaceParentBuilder.Build([1]any{childID}, parents)
|
||||
return seq.Exec(ctx, query, params)
|
||||
return seq.Exec(ctx, query, params...)
|
||||
}
|
||||
|
||||
func (seq *SpaceEdgeQuery) RevalidateAllChildrenOfParentValidity(ctx context.Context, spaceID id.RoomID) error {
|
||||
|
|
|
@ -1131,11 +1131,14 @@ func processImportantEvent(
|
|||
}
|
||||
switch evt.Type {
|
||||
case event.StateCreate, event.StateTombstone, event.StateRoomName, event.StateCanonicalAlias,
|
||||
event.StateRoomAvatar, event.StateTopic, event.StateEncryption,
|
||||
event.StateSpaceChild, event.StateSpaceParent, event.StatePowerLevels:
|
||||
event.StateRoomAvatar, event.StateTopic, event.StateEncryption, event.StatePowerLevels:
|
||||
if *evt.StateKey != "" {
|
||||
return
|
||||
}
|
||||
case event.StateSpaceChild, event.StateSpaceParent:
|
||||
if !strings.HasPrefix(*evt.StateKey, "!") {
|
||||
return
|
||||
}
|
||||
default:
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue