mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-22 05:23:09 -06:00
Make SQLite work again
This commit is contained in:
parent
823540e861
commit
28690b72f9
|
|
@ -21,6 +21,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/matrix-org/dendrite/roomserver/storage/tables"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/util"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
|
@ -226,6 +227,7 @@ func (r *Queryer) QueryMembershipAtEvent(
|
|||
return fmt.Errorf("no roomInfo found")
|
||||
}
|
||||
|
||||
// get the users stateKeyNID
|
||||
stateKeyNIDs, err := r.DB.EventStateKeyNIDs(ctx, []string{request.UserID})
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to get stateKeyNIDs for %s: %w", request.UserID, err)
|
||||
|
|
@ -238,21 +240,12 @@ func (r *Queryer) QueryMembershipAtEvent(
|
|||
switch err {
|
||||
case nil:
|
||||
return nil
|
||||
//case tables.OptimisationNotSupportedError: // fallthrough
|
||||
case tables.OptimisationNotSupportedError: // fallthrough
|
||||
default:
|
||||
return err
|
||||
}
|
||||
|
||||
/*
|
||||
// get the users stateKeyNID
|
||||
stateKeyNIDs, err := r.DB.EventStateKeyNIDs(ctx, []string{request.UserID})
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to get stateKeyNIDs for %s: %w", request.UserID, err)
|
||||
}
|
||||
if _, ok := stateKeyNIDs[request.UserID]; !ok {
|
||||
return fmt.Errorf("requested stateKeyNID for %s was not found", request.UserID)
|
||||
}
|
||||
|
||||
response.Memberships = make(map[string]*gomatrixserverlib.HeaderedEvent)
|
||||
stateEntries, err := helpers.MembershipAtEvent(ctx, r.DB, nil, request.EventIDs, stateKeyNIDs[request.UserID])
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to get state before event: %w", err)
|
||||
|
|
@ -294,18 +287,15 @@ func (r *Queryer) QueryMembershipAtEvent(
|
|||
return fmt.Errorf("unable to get memberships at state: %w", err)
|
||||
}
|
||||
|
||||
res := make([]*gomatrixserverlib.HeaderedEvent, 0, len(memberships))
|
||||
|
||||
for i := range memberships {
|
||||
ev := memberships[i]
|
||||
if ev.Type() == gomatrixserverlib.MRoomMember && ev.StateKeyEquals(request.UserID) {
|
||||
res = append(res, ev.Headered(roomVersion))
|
||||
response.Memberships[eventID] = ev.Event.Headered(info.RoomVersion)
|
||||
}
|
||||
}
|
||||
response.Memberships[eventID] = res
|
||||
}
|
||||
|
||||
return nil*/
|
||||
return nil
|
||||
}
|
||||
|
||||
// QueryMembershipsForRoom implements api.RoomserverInternalAPI
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ func visibilityForEvents(
|
|||
visibility: event.Visibility,
|
||||
}
|
||||
ev, ok := membershipResp.Memberships[eventID]
|
||||
if !ok {
|
||||
if !ok || ev == nil {
|
||||
result[eventID] = vis
|
||||
continue
|
||||
}
|
||||
|
|
|
|||
|
|
@ -407,7 +407,11 @@ func (s *outputRoomEventsStatements) InsertEvent(
|
|||
// selectRecentEvents returns the most recent events in the given room, up to a maximum of 'limit'.
|
||||
// If onlySyncEvents has a value of true, only returns the events that aren't marked as to exclude
|
||||
// from sync.
|
||||
func (s *outputRoomEventsStatements) SelectRecentEvents(ctx context.Context, txn *sql.Tx, roomIDs []string, ra types.Range, eventFilter *gomatrixserverlib.RoomEventFilter, chronologicalOrder bool, onlySyncEvents bool) (map[string]types.RecentEvents, error) {
|
||||
func (s *outputRoomEventsStatements) SelectRecentEvents(
|
||||
ctx context.Context, txn *sql.Tx,
|
||||
roomIDs []string, ra types.Range, eventFilter *gomatrixserverlib.RoomEventFilter,
|
||||
chronologicalOrder bool, onlySyncEvents bool,
|
||||
) (map[string]types.RecentEvents, error) {
|
||||
var stmt *sql.Stmt
|
||||
if onlySyncEvents {
|
||||
stmt = sqlutil.TxStmt(txn, s.selectRecentEventsForSyncStmt)
|
||||
|
|
|
|||
|
|
@ -366,7 +366,11 @@ func (s *outputRoomEventsStatements) InsertEvent(
|
|||
return streamPos, err
|
||||
}
|
||||
|
||||
func (s *outputRoomEventsStatements) SelectRecentEvents(ctx context.Context, txn *sql.Tx, roomIDs []string, r types.Range, eventFilter *gomatrixserverlib.RoomEventFilter, chronologicalOrder bool, onlySyncEvents bool) (map[string]types.RecentEvents, error) {
|
||||
func (s *outputRoomEventsStatements) SelectRecentEvents(
|
||||
ctx context.Context, txn *sql.Tx,
|
||||
roomIDs []string, r types.Range, eventFilter *gomatrixserverlib.RoomEventFilter,
|
||||
chronologicalOrder bool, onlySyncEvents bool,
|
||||
) (map[string]types.RecentEvents, error) {
|
||||
var query string
|
||||
if onlySyncEvents {
|
||||
query = selectRecentEventsForSyncSQL
|
||||
|
|
@ -374,10 +378,12 @@ func (s *outputRoomEventsStatements) SelectRecentEvents(ctx context.Context, txn
|
|||
query = selectRecentEventsSQL
|
||||
}
|
||||
|
||||
result := make(map[string]types.RecentEvents, len(roomIDs))
|
||||
for _, roomID := range roomIDs {
|
||||
stmt, params, err := prepareWithFilters(
|
||||
s.db, txn, query,
|
||||
[]interface{}{
|
||||
roomIDs, r.Low(), r.High(),
|
||||
roomID, r.Low(), r.High(),
|
||||
},
|
||||
eventFilter.Senders, eventFilter.NotSenders,
|
||||
eventFilter.Types, eventFilter.NotTypes,
|
||||
|
|
@ -405,8 +411,10 @@ func (s *outputRoomEventsStatements) SelectRecentEvents(ctx context.Context, txn
|
|||
return events[i].StreamPosition < events[j].StreamPosition
|
||||
})
|
||||
}
|
||||
res := types.RecentEvents{}
|
||||
// we queried for 1 more than the limit, so if we returned one more mark limited=true
|
||||
if len(events) > eventFilter.Limit {
|
||||
res.Limited = true
|
||||
// re-slice the extra (oldest) event out: in chronological order this is the first entry, else the last.
|
||||
if chronologicalOrder {
|
||||
events = events[1:]
|
||||
|
|
@ -414,7 +422,11 @@ func (s *outputRoomEventsStatements) SelectRecentEvents(ctx context.Context, txn
|
|||
events = events[:len(events)-1]
|
||||
}
|
||||
}
|
||||
return map[string]types.RecentEvents{}, nil
|
||||
res.Events = events
|
||||
result[roomID] = res
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (s *outputRoomEventsStatements) SelectEarlyEvents(
|
||||
|
|
|
|||
Loading…
Reference in a new issue