Fix sqlite DeletePeeks API to match postgres; fix bug which incorrectly altered sp when nothing is deleted

This commit is contained in:
Kegan Dougal 2020-09-09 16:53:21 +01:00
parent 15349d8287
commit 34b89619f2
3 changed files with 22 additions and 9 deletions

View file

@ -216,10 +216,12 @@ func (s *OutputRoomEventConsumer) notifyJoinedPeeks(ctx context.Context, ev *gom
} }
// cancel any peeks for it // cancel any peeks for it
sp, err = s.db.DeletePeeks(ctx, ev.RoomID(), *ev.StateKey()) peekSP, peekErr := s.db.DeletePeeks(ctx, ev.RoomID(), *ev.StateKey())
// XXX: should we do anything with this new streampos? if peekErr != nil {
if err != nil { return sp, fmt.Errorf("s.db.DeletePeeks: %w", peekErr)
return sp, fmt.Errorf("s.db.DeletePeeks: %w", err) }
if peekSP > 0 {
sp = peekSP
} }
} }
return sp, nil return sp, nil

View file

@ -187,6 +187,7 @@ func (d *Database) DeletePeeks(
return err return err
}) })
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
sp = 0
err = nil err = nil
} }
return return

View file

@ -129,13 +129,23 @@ func (s *peekStatements) DeletePeek(
func (s *peekStatements) DeletePeeks( func (s *peekStatements) DeletePeeks(
ctx context.Context, txn *sql.Tx, roomID, userID string, ctx context.Context, txn *sql.Tx, roomID, userID string,
) (streamPos types.StreamPosition, err error) { ) (types.StreamPosition, error) {
streamPos, err = s.streamIDStatements.nextStreamID(ctx, txn) streamPos, err := s.streamIDStatements.nextStreamID(ctx, txn)
if err != nil { if err != nil {
return return 0, err
} }
_, err = sqlutil.TxStmt(txn, s.deletePeeksStmt).ExecContext(ctx, streamPos, roomID, userID) result, err := sqlutil.TxStmt(txn, s.deletePeeksStmt).ExecContext(ctx, streamPos, roomID, userID)
return if err != nil {
return 0, err
}
numAffected, err := result.RowsAffected()
if err != nil {
return 0, err
}
if numAffected == 0 {
return 0, sql.ErrNoRows
}
return streamPos, nil
} }
func (s *peekStatements) SelectPeeksInRange( func (s *peekStatements) SelectPeeksInRange(