mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-08-03 14:42:47 +00:00
Add QueryStateAndAuthChainIDs
This commit is contained in:
parent
1827dd7c09
commit
90dd5e6544
8 changed files with 175 additions and 0 deletions
|
@ -134,6 +134,9 @@ const selectMaxEventDepthSQL = "" +
|
|||
const selectRoomNIDsForEventNIDsSQL = "" +
|
||||
"SELECT event_nid, room_nid FROM roomserver_events WHERE event_nid = ANY($1)"
|
||||
|
||||
const bulkSelectEventAuthEventNIDsSQL = "" +
|
||||
"SELECT auth_event_nids FROM roomserver_events WHERE event_nid = ANY($1)"
|
||||
|
||||
type eventStatements struct {
|
||||
insertEventStmt *sql.Stmt
|
||||
selectEventStmt *sql.Stmt
|
||||
|
@ -150,6 +153,7 @@ type eventStatements struct {
|
|||
bulkSelectEventNIDStmt *sql.Stmt
|
||||
selectMaxEventDepthStmt *sql.Stmt
|
||||
selectRoomNIDsForEventNIDsStmt *sql.Stmt
|
||||
bulkSelectEventAuthEventNIDsStmt *sql.Stmt
|
||||
}
|
||||
|
||||
func createEventsTable(db *sql.DB) error {
|
||||
|
@ -176,6 +180,7 @@ func prepareEventsTable(db *sql.DB) (tables.Events, error) {
|
|||
{&s.bulkSelectEventNIDStmt, bulkSelectEventNIDSQL},
|
||||
{&s.selectMaxEventDepthStmt, selectMaxEventDepthSQL},
|
||||
{&s.selectRoomNIDsForEventNIDsStmt, selectRoomNIDsForEventNIDsSQL},
|
||||
{&s.bulkSelectEventAuthEventNIDsStmt, bulkSelectEventAuthEventNIDsSQL},
|
||||
}.Prepare(db)
|
||||
}
|
||||
|
||||
|
@ -502,6 +507,28 @@ func (s *eventStatements) SelectRoomNIDsForEventNIDs(
|
|||
return result, nil
|
||||
}
|
||||
|
||||
func (s *eventStatements) SelectEventAuthEventNIDs(
|
||||
ctx context.Context, eventNIDs []types.EventNID,
|
||||
) (map[types.EventNID][]types.EventNID, error) {
|
||||
rows, err := s.bulkSelectEventAuthEventNIDsStmt.QueryContext(ctx, eventNIDsAsArray(eventNIDs))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer internal.CloseAndLogIfError(ctx, rows, "selectRoomNIDsForEventNIDsStmt: rows.close() failed")
|
||||
result := make(map[types.EventNID][]types.EventNID)
|
||||
for rows.Next() {
|
||||
var eventNID types.EventNID
|
||||
var authEventNIDs pq.Int64Array
|
||||
if err = rows.Scan(&authEventNIDs); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, a := range authEventNIDs {
|
||||
result[eventNID] = append(result[eventNID], types.EventNID(a))
|
||||
}
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func eventNIDsAsArray(eventNIDs []types.EventNID) pq.Int64Array {
|
||||
nids := make([]int64, len(eventNIDs))
|
||||
for i := range eventNIDs {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue