mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-26 08:13:09 -06:00
Add select functions
This commit is contained in:
parent
12d93eb6ed
commit
5113aa8433
|
|
@ -57,8 +57,13 @@ const upsertMembershipSQL = "" +
|
||||||
" ON CONFLICT ON CONSTRAINT syncapi_memberships_unique" +
|
" ON CONFLICT ON CONSTRAINT syncapi_memberships_unique" +
|
||||||
" DO UPDATE SET event_id = $4, stream_pos = $5, topological_pos = $6"
|
" DO UPDATE SET event_id = $4, stream_pos = $5, topological_pos = $6"
|
||||||
|
|
||||||
|
const selectMembershipSQL = "" +
|
||||||
|
"SELECT event_id, stream_pos, topological_pos FROM syncapi_memberships" +
|
||||||
|
" WHERE room_id = $1 AND user_id = $2 AND membership = $3"
|
||||||
|
|
||||||
type membershipsStatements struct {
|
type membershipsStatements struct {
|
||||||
upsertMembershipStmt *sql.Stmt
|
upsertMembershipStmt *sql.Stmt
|
||||||
|
selectMembershipStmt *sql.Stmt
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPostgresMembershipsTable(db *sql.DB) (tables.Memberships, error) {
|
func NewPostgresMembershipsTable(db *sql.DB) (tables.Memberships, error) {
|
||||||
|
|
@ -70,6 +75,9 @@ func NewPostgresMembershipsTable(db *sql.DB) (tables.Memberships, error) {
|
||||||
if s.upsertMembershipStmt, err = db.Prepare(upsertMembershipSQL); err != nil {
|
if s.upsertMembershipStmt, err = db.Prepare(upsertMembershipSQL); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if s.selectMembershipStmt, err = db.Prepare(selectMembershipSQL); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -92,3 +100,11 @@ func (s *membershipsStatements) UpsertMembership(
|
||||||
)
|
)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *membershipsStatements) SelectMembership(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomID, userID, membership string,
|
||||||
|
) (eventID string, streamPos, topologyPos types.StreamPosition, err error) {
|
||||||
|
stmt := sqlutil.TxStmt(txn, s.selectMembershipStmt)
|
||||||
|
err = stmt.QueryRowContext(ctx, roomID, userID, membership).Scan(&eventID, &streamPos, &topologyPos)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,8 +57,13 @@ const upsertMembershipSQL = "" +
|
||||||
" ON CONFLICT (room_id, user_id, membership)" +
|
" ON CONFLICT (room_id, user_id, membership)" +
|
||||||
" DO UPDATE SET event_id = $4, stream_pos = $5, topological_pos = $6"
|
" DO UPDATE SET event_id = $4, stream_pos = $5, topological_pos = $6"
|
||||||
|
|
||||||
|
const selectMembershipSQL = "" +
|
||||||
|
"SELECT event_id, stream_pos, topological_pos FROM syncapi_memberships" +
|
||||||
|
" WHERE room_id = $1 AND user_id = $2 AND membership = $3"
|
||||||
|
|
||||||
type membershipsStatements struct {
|
type membershipsStatements struct {
|
||||||
upsertMembershipStmt *sql.Stmt
|
upsertMembershipStmt *sql.Stmt
|
||||||
|
selectMembershipStmt *sql.Stmt
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSqliteMembershipsTable(db *sql.DB) (tables.Memberships, error) {
|
func NewSqliteMembershipsTable(db *sql.DB) (tables.Memberships, error) {
|
||||||
|
|
@ -70,6 +75,9 @@ func NewSqliteMembershipsTable(db *sql.DB) (tables.Memberships, error) {
|
||||||
if s.upsertMembershipStmt, err = db.Prepare(upsertMembershipSQL); err != nil {
|
if s.upsertMembershipStmt, err = db.Prepare(upsertMembershipSQL); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if s.selectMembershipStmt, err = db.Prepare(selectMembershipSQL); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -92,3 +100,11 @@ func (s *membershipsStatements) UpsertMembership(
|
||||||
)
|
)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *membershipsStatements) SelectMembership(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomID, userID, membership string,
|
||||||
|
) (eventID string, streamPos, topologyPos types.StreamPosition, err error) {
|
||||||
|
stmt := sqlutil.TxStmt(txn, s.selectMembershipStmt)
|
||||||
|
err = stmt.QueryRowContext(ctx, roomID, userID, membership).Scan(&eventID, &streamPos, &topologyPos)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -165,4 +165,5 @@ type Receipts interface {
|
||||||
|
|
||||||
type Memberships interface {
|
type Memberships interface {
|
||||||
UpsertMembership(ctx context.Context, txn *sql.Tx, event *gomatrixserverlib.HeaderedEvent, streamPos, topologicalPos types.StreamPosition) error
|
UpsertMembership(ctx context.Context, txn *sql.Tx, event *gomatrixserverlib.HeaderedEvent, streamPos, topologicalPos types.StreamPosition) error
|
||||||
|
SelectMembership(ctx context.Context, txn *sql.Tx, roomID, userID, membership string) (eventID string, streamPos, topologyPos types.StreamPosition, err error)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue