Start his vis

This commit is contained in:
Neil Alexander 2021-01-20 14:41:09 +00:00
parent 33f8d0e278
commit 10f2e8d92f
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
7 changed files with 214 additions and 30 deletions

View file

@ -90,14 +90,19 @@ const selectStateInRangeSQL = "" +
const deleteEventsForRoomSQL = "" +
"DELETE FROM syncapi_output_room_events WHERE room_id = $1"
const selectPositionInStreamSQL = "" +
"SELECT id FROM syncapi_output_room_events" +
" WHERE event_id = $1"
type outputRoomEventsStatements struct {
db *sql.DB
streamIDStatements *streamIDStatements
insertEventStmt *sql.Stmt
selectEventsStmt *sql.Stmt
selectMaxEventIDStmt *sql.Stmt
updateEventJSONStmt *sql.Stmt
deleteEventsForRoomStmt *sql.Stmt
db *sql.DB
streamIDStatements *streamIDStatements
insertEventStmt *sql.Stmt
selectEventsStmt *sql.Stmt
selectMaxEventIDStmt *sql.Stmt
updateEventJSONStmt *sql.Stmt
deleteEventsForRoomStmt *sql.Stmt
selectPositionInStreamStmt *sql.Stmt
}
func NewSqliteEventsTable(db *sql.DB, streamID *streamIDStatements) (tables.Events, error) {
@ -124,6 +129,9 @@ func NewSqliteEventsTable(db *sql.DB, streamID *streamIDStatements) (tables.Even
if s.deleteEventsForRoomStmt, err = db.Prepare(deleteEventsForRoomSQL); err != nil {
return nil, err
}
if s.selectPositionInStreamStmt, err = db.Prepare(selectPositionInStreamSQL); err != nil {
return nil, err
}
return s, nil
}
@ -424,6 +432,15 @@ func (s *outputRoomEventsStatements) DeleteEventsForRoom(
return err
}
// SelectPositionInStream returns the position of a given event in the
// global stream topology.
func (s *outputRoomEventsStatements) SelectPositionInStream(
ctx context.Context, txn *sql.Tx, eventID string,
) (pos types.StreamPosition, err error) {
err = s.selectPositionInStreamStmt.QueryRowContext(ctx, eventID).Scan(&pos)
return
}
func rowsToStreamEvents(rows *sql.Rows) ([]types.StreamEvent, error) {
var result []types.StreamEvent
for rows.Next() {