aboutsummaryrefslogtreecommitdiff
path: root/currentstateserver/storage/tables/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'currentstateserver/storage/tables/interface.go')
-rw-r--r--currentstateserver/storage/tables/interface.go88
1 files changed, 0 insertions, 88 deletions
diff --git a/currentstateserver/storage/tables/interface.go b/currentstateserver/storage/tables/interface.go
deleted file mode 100644
index cc5c6e80..00000000
--- a/currentstateserver/storage/tables/interface.go
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2020 The Matrix.org Foundation C.I.C.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package tables
-
-import (
- "context"
- "database/sql"
-
- "github.com/matrix-org/gomatrixserverlib"
- "github.com/tidwall/gjson"
-)
-
-type CurrentRoomState interface {
- SelectStateEvent(ctx context.Context, roomID, evType, stateKey string) (*gomatrixserverlib.HeaderedEvent, error)
- // SelectEventsWithEventIDs returns the events for the given event IDs. If the event(s) are missing, they are not returned
- // and no error is returned.
- SelectEventsWithEventIDs(ctx context.Context, txn *sql.Tx, eventIDs []string) ([]gomatrixserverlib.HeaderedEvent, error)
- // UpsertRoomState stores the given event in the database, along with an extracted piece of content.
- // The piece of content will vary depending on the event type, and table implementations may use this information to optimise
- // lookups e.g membership lookups. The mapped value of `contentVal` is outlined in ExtractContentValue. An empty `contentVal`
- // means there is nothing to store for this field.
- UpsertRoomState(ctx context.Context, txn *sql.Tx, event gomatrixserverlib.HeaderedEvent, contentVal string) error
- DeleteRoomStateByEventID(ctx context.Context, txn *sql.Tx, eventID string) error
- // SelectRoomIDsWithMembership returns the list of room IDs which have the given user in the given membership state.
- SelectRoomIDsWithMembership(ctx context.Context, txn *sql.Tx, userID string, membership string) ([]string, error)
- SelectBulkStateContent(ctx context.Context, roomIDs []string, tuples []gomatrixserverlib.StateKeyTuple, allowWildcards bool) ([]StrippedEvent, error)
- // SelectJoinedUsersSetForRooms returns the set of all users in the rooms who are joined to any of these rooms, along with the
- // counts of how many rooms they are joined.
- SelectJoinedUsersSetForRooms(ctx context.Context, roomIDs []string) (map[string]int, error)
- // SelectKnownUsers searches all users that userID knows about.
- SelectKnownUsers(ctx context.Context, userID, searchString string, limit int) ([]string, error)
- // SelectKnownRooms returns all rooms that we know about.
- SelectKnownRooms(ctx context.Context) ([]string, error)
-}
-
-// StrippedEvent represents a stripped event for returning extracted content values.
-type StrippedEvent struct {
- RoomID string
- EventType string
- StateKey string
- ContentValue string
-}
-
-// ExtractContentValue from the given state event. For example, given an m.room.name event with:
-// content: { name: "Foo" }
-// this returns "Foo".
-func ExtractContentValue(ev *gomatrixserverlib.HeaderedEvent) string {
- content := ev.Content()
- key := ""
- switch ev.Type() {
- case gomatrixserverlib.MRoomCreate:
- key = "creator"
- case gomatrixserverlib.MRoomCanonicalAlias:
- key = "alias"
- case gomatrixserverlib.MRoomHistoryVisibility:
- key = "history_visibility"
- case gomatrixserverlib.MRoomJoinRules:
- key = "join_rule"
- case gomatrixserverlib.MRoomMember:
- key = "membership"
- case gomatrixserverlib.MRoomName:
- key = "name"
- case "m.room.avatar":
- key = "url"
- case "m.room.topic":
- key = "topic"
- case "m.room.guest_access":
- key = "guest_access"
- }
- result := gjson.GetBytes(content, key)
- if !result.Exists() {
- return ""
- }
- // this returns the empty string if this is not a string type
- return result.Str
-}