Review comments

This commit is contained in:
Kegan Dougal 2017-04-19 17:45:18 +01:00
parent 6b86d68bed
commit f62751ef10

View file

@ -224,9 +224,13 @@ func (s *outputRoomEventsStatements) RecentEventsInRoom(txn *sql.Tx, roomID stri
return nil, err return nil, err
} }
defer rows.Close() defer rows.Close()
events, err := rowsToEvents(rows)
if err != nil {
return nil, err
}
// reverse the order because [0] is the newest event due to the ORDER BY in SQL-land. The reverse order makes [0] the oldest event, // reverse the order because [0] is the newest event due to the ORDER BY in SQL-land. The reverse order makes [0] the oldest event,
// which is correct for /sync responses. // which is correct for /sync responses.
return rowsToEvents(rows, rowOrderReverse) return reverseEvents(events), nil
} }
// Events returns the events for the given event IDs. Returns an error if any one of the event IDs given are missing // Events returns the events for the given event IDs. Returns an error if any one of the event IDs given are missing
@ -237,7 +241,7 @@ func (s *outputRoomEventsStatements) Events(txn *sql.Tx, eventIDs []string) ([]g
return nil, err return nil, err
} }
defer rows.Close() defer rows.Close()
result, err := rowsToEvents(rows, rowOrderForward) result, err := rowsToEvents(rows)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -248,14 +252,7 @@ func (s *outputRoomEventsStatements) Events(txn *sql.Tx, eventIDs []string) ([]g
return result, nil return result, nil
} }
type rowOrdering uint8 func rowsToEvents(rows *sql.Rows) ([]gomatrixserverlib.Event, error) {
const (
rowOrderForward = rowOrdering(iota)
rowOrderReverse
)
func rowsToEvents(rows *sql.Rows, order rowOrdering) ([]gomatrixserverlib.Event, error) {
var result []gomatrixserverlib.Event var result []gomatrixserverlib.Event
for rows.Next() { for rows.Next() {
var eventBytes []byte var eventBytes []byte
@ -267,14 +264,14 @@ func rowsToEvents(rows *sql.Rows, order rowOrdering) ([]gomatrixserverlib.Event,
if err != nil { if err != nil {
return nil, err return nil, err
} }
if order == rowOrderForward { result = append(result, ev)
result = append(result, ev)
} else if order == rowOrderReverse {
result = append([]gomatrixserverlib.Event{ev}, result...)
} else {
return nil, fmt.Errorf("rowsToEvents: bad order %d", order)
}
} }
return result, nil return result, nil
} }
func reverseEvents(input []gomatrixserverlib.Event) (output []gomatrixserverlib.Event) {
for i := len(input) - 1; i >= 0; i-- {
output = append(output, input[i])
}
return
}