Persist the origin_server_ts as well

This commit is contained in:
Kegan Dougal 2020-11-03 13:08:44 +00:00
parent ebb70ef68f
commit a7bb1119d7
2 changed files with 9 additions and 7 deletions

View file

@ -154,8 +154,6 @@ func eventRelationshipHandler(db Database, rsAPI roomserver.RoomserverInternalAP
for _, ev := range returnEvents { for _, ev := range returnEvents {
depths[ev.EventID()] = 1 depths[ev.EventID()] = 1
} }
// Begin to walk the thread DAG in the direction specified, either depth or breadth first according to the depth_first flag,
// honouring the limit, max_depth and max_breadth values according to the following rules
var events []*gomatrixserverlib.HeaderedEvent var events []*gomatrixserverlib.HeaderedEvent
events, walkLimited = walkThread( events, walkLimited = walkThread(
req.Context(), db, rsAPI, device.UserID, &relation, depths, remaining, req.Context(), db, rsAPI, device.UserID, &relation, depths, remaining,
@ -215,6 +213,8 @@ func includeChildren(ctx context.Context, rsAPI roomserver.RoomserverInternalAPI
return childEvents, nil return childEvents, nil
} }
// Begin to walk the thread DAG in the direction specified, either depth or breadth first according to the depth_first flag,
// honouring the limit, max_depth and max_breadth values according to the following rules
// nolint: unparam // nolint: unparam
func walkThread( func walkThread(
ctx context.Context, db Database, rsAPI roomserver.RoomserverInternalAPI, userID string, req *EventRelationshipRequest, included map[string]int, limit int, ctx context.Context, db Database, rsAPI roomserver.RoomserverInternalAPI, userID string, req *EventRelationshipRequest, included map[string]int, limit int,

View file

@ -33,6 +33,7 @@ func NewPostgresDatabase(dbOpts *config.DatabaseOptions) (Database, error) {
parent_event_id TEXT NOT NULL, parent_event_id TEXT NOT NULL,
child_event_id TEXT NOT NULL, child_event_id TEXT NOT NULL,
parent_room_id TEXT NOT NULL, parent_room_id TEXT NOT NULL,
parent_origin_server_ts BIGINT NOT NULL,
CONSTRAINT msc2836_relationships_unique UNIQUE (parent_event_id, child_event_id) CONSTRAINT msc2836_relationships_unique UNIQUE (parent_event_id, child_event_id)
); );
`) `)
@ -40,7 +41,7 @@ func NewPostgresDatabase(dbOpts *config.DatabaseOptions) (Database, error) {
return nil, err return nil, err
} }
if p.insertRelationStmt, err = p.db.Prepare(` if p.insertRelationStmt, err = p.db.Prepare(`
INSERT INTO msc2836_relationships(parent_event_id, child_event_id, parent_room_id) VALUES($1, $2, $3) ON CONFLICT DO NOTHING INSERT INTO msc2836_relationships(parent_event_id, child_event_id, parent_room_id, parent_origin_server_ts) VALUES($1, $2, $3, $4) ON CONFLICT DO NOTHING
`); err != nil { `); err != nil {
return nil, err return nil, err
} }
@ -57,7 +58,7 @@ func (p *Postgres) StoreRelation(ctx context.Context, ev *gomatrixserverlib.Head
if parent == "" || child == "" { if parent == "" || child == "" {
return nil return nil
} }
_, err := p.insertRelationStmt.ExecContext(ctx, parent, child, "") _, err := p.insertRelationStmt.ExecContext(ctx, parent, child, ev.RoomID(), ev.OriginServerTS())
return err return err
} }
@ -83,7 +84,8 @@ func NewSQLiteDatabase(dbOpts *config.DatabaseOptions) (Database, error) {
CREATE TABLE IF NOT EXISTS msc2836_relationships ( CREATE TABLE IF NOT EXISTS msc2836_relationships (
parent_event_id TEXT NOT NULL, parent_event_id TEXT NOT NULL,
child_event_id TEXT NOT NULL, child_event_id TEXT NOT NULL,
room_id TEXT NOT NULL, parent_room_id TEXT NOT NULL,
parent_origin_server_ts BIGINT NOT NULL,
UNIQUE (parent_event_id, child_event_id) UNIQUE (parent_event_id, child_event_id)
); );
`) `)
@ -91,7 +93,7 @@ func NewSQLiteDatabase(dbOpts *config.DatabaseOptions) (Database, error) {
return nil, err return nil, err
} }
if s.insertRelationStmt, err = s.db.Prepare(` if s.insertRelationStmt, err = s.db.Prepare(`
INSERT INTO msc2836_relationships(parent_event_id, child_event_id, room_id) VALUES($1, $2, $3) ON CONFLICT (parent_event_id, child_event_id) DO NOTHING INSERT INTO msc2836_relationships(parent_event_id, child_event_id, parent_room_id, parent_origin_server_ts) VALUES($1, $2, $3, $4) ON CONFLICT (parent_event_id, child_event_id) DO NOTHING
`); err != nil { `); err != nil {
return nil, err return nil, err
} }
@ -108,7 +110,7 @@ func (s *SQLite) StoreRelation(ctx context.Context, ev *gomatrixserverlib.Header
if parent == "" || child == "" { if parent == "" || child == "" {
return nil return nil
} }
_, err := s.insertRelationStmt.ExecContext(ctx, parent, child, "") _, err := s.insertRelationStmt.ExecContext(ctx, parent, child, ev.RoomID(), ev.OriginServerTS())
return err return err
} }