mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-06 13:43:09 -06:00
Also limit presence by last_active_ts
This commit is contained in:
parent
5793df8825
commit
8be4762ff3
|
|
@ -17,6 +17,7 @@ package postgres
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||||
|
|
@ -72,7 +73,8 @@ const selectMaxPresenceSQL = "" +
|
||||||
const selectPresenceAfter = "" +
|
const selectPresenceAfter = "" +
|
||||||
" SELECT id, user_id, presence, status_msg, last_active_ts" +
|
" SELECT id, user_id, presence, status_msg, last_active_ts" +
|
||||||
" FROM syncapi_presence" +
|
" FROM syncapi_presence" +
|
||||||
" WHERE id > $1 ORDER BY id DESC, last_active_ts DESC LIMIT $2"
|
" WHERE id > $1 AND last_active_ts > $2" +
|
||||||
|
" ORDER BY id DESC, last_active_ts DESC LIMIT $3"
|
||||||
|
|
||||||
type presenceStatements struct {
|
type presenceStatements struct {
|
||||||
upsertPresenceStmt *sql.Stmt
|
upsertPresenceStmt *sql.Stmt
|
||||||
|
|
@ -148,8 +150,8 @@ func (p *presenceStatements) GetPresenceAfter(
|
||||||
) (presences map[string]*types.PresenceInternal, err error) {
|
) (presences map[string]*types.PresenceInternal, err error) {
|
||||||
presences = make(map[string]*types.PresenceInternal)
|
presences = make(map[string]*types.PresenceInternal)
|
||||||
stmt := sqlutil.TxStmt(txn, p.selectPresenceAfterStmt)
|
stmt := sqlutil.TxStmt(txn, p.selectPresenceAfterStmt)
|
||||||
|
afterTS := gomatrixserverlib.AsTimestamp(time.Now().Add(-time.Minute * 5))
|
||||||
rows, err := stmt.QueryContext(ctx, after, filter.Limit)
|
rows, err := stmt.QueryContext(ctx, after, afterTS, filter.Limit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ package sqlite3
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||||
|
|
@ -71,7 +72,8 @@ const selectMaxPresenceSQL = "" +
|
||||||
const selectPresenceAfter = "" +
|
const selectPresenceAfter = "" +
|
||||||
" SELECT id, user_id, presence, status_msg, last_active_ts" +
|
" SELECT id, user_id, presence, status_msg, last_active_ts" +
|
||||||
" FROM syncapi_presence" +
|
" FROM syncapi_presence" +
|
||||||
" WHERE id > $1 ORDER BY id DESC, last_active_ts DESC LIMIT $2"
|
" WHERE id > $1 AND last_active_ts > $2" +
|
||||||
|
" ORDER BY id DESC, last_active_ts DESC LIMIT $3"
|
||||||
|
|
||||||
type presenceStatements struct {
|
type presenceStatements struct {
|
||||||
db *sql.DB
|
db *sql.DB
|
||||||
|
|
@ -162,8 +164,8 @@ func (p *presenceStatements) GetPresenceAfter(
|
||||||
) (presences map[string]*types.PresenceInternal, err error) {
|
) (presences map[string]*types.PresenceInternal, err error) {
|
||||||
presences = make(map[string]*types.PresenceInternal)
|
presences = make(map[string]*types.PresenceInternal)
|
||||||
stmt := sqlutil.TxStmt(txn, p.selectPresenceAfterStmt)
|
stmt := sqlutil.TxStmt(txn, p.selectPresenceAfterStmt)
|
||||||
|
afterTS := gomatrixserverlib.AsTimestamp(time.Now().Add(-time.Minute * 5))
|
||||||
rows, err := stmt.QueryContext(ctx, after, filter.Limit)
|
rows, err := stmt.QueryContext(ctx, after, afterTS, filter.Limit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue