mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-11-15 12:02:04 -05:00
Merge pull request #288 from matrix-org/markjh/unused_definitions
Remove some of the unused definitions from synapse
This commit is contained in:
commit
301141515a
18 changed files with 162 additions and 588 deletions
|
|
@ -25,8 +25,6 @@ from util.id_generators import IdGenerator, StreamIdGenerator
|
|||
|
||||
from twisted.internet import defer
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
import sys
|
||||
import time
|
||||
import threading
|
||||
|
|
@ -376,9 +374,6 @@ class SQLBaseStore(object):
|
|||
|
||||
return self.runInteraction(desc, interaction)
|
||||
|
||||
def _execute_and_decode(self, desc, query, *args):
|
||||
return self._execute(desc, self.cursor_to_dict, query, *args)
|
||||
|
||||
# "Simple" SQL API methods that operate on a single table with no JOINs,
|
||||
# no complex WHERE clauses, just a dict of values for columns.
|
||||
|
||||
|
|
@ -691,37 +686,6 @@ class SQLBaseStore(object):
|
|||
|
||||
return dict(zip(retcols, row))
|
||||
|
||||
def _simple_selectupdate_one(self, table, keyvalues, updatevalues=None,
|
||||
retcols=None, allow_none=False,
|
||||
desc="_simple_selectupdate_one"):
|
||||
""" Combined SELECT then UPDATE."""
|
||||
def func(txn):
|
||||
ret = None
|
||||
if retcols:
|
||||
ret = self._simple_select_one_txn(
|
||||
txn,
|
||||
table=table,
|
||||
keyvalues=keyvalues,
|
||||
retcols=retcols,
|
||||
allow_none=allow_none,
|
||||
)
|
||||
|
||||
if updatevalues:
|
||||
self._simple_update_one_txn(
|
||||
txn,
|
||||
table=table,
|
||||
keyvalues=keyvalues,
|
||||
updatevalues=updatevalues,
|
||||
)
|
||||
|
||||
# if txn.rowcount == 0:
|
||||
# raise StoreError(404, "No row found")
|
||||
if txn.rowcount > 1:
|
||||
raise StoreError(500, "More than one row matched")
|
||||
|
||||
return ret
|
||||
return self.runInteraction(desc, func)
|
||||
|
||||
def _simple_delete_one(self, table, keyvalues, desc="_simple_delete_one"):
|
||||
"""Executes a DELETE query on the named table, expecting to delete a
|
||||
single row.
|
||||
|
|
@ -743,16 +707,6 @@ class SQLBaseStore(object):
|
|||
raise StoreError(500, "more than one row matched")
|
||||
return self.runInteraction(desc, func)
|
||||
|
||||
def _simple_delete(self, table, keyvalues, desc="_simple_delete"):
|
||||
"""Executes a DELETE query on the named table.
|
||||
|
||||
Args:
|
||||
table : string giving the table name
|
||||
keyvalues : dict of column names and values to select the row with
|
||||
"""
|
||||
|
||||
return self.runInteraction(desc, self._simple_delete_txn)
|
||||
|
||||
def _simple_delete_txn(self, txn, table, keyvalues):
|
||||
sql = "DELETE FROM %s WHERE %s" % (
|
||||
table,
|
||||
|
|
@ -761,24 +715,6 @@ class SQLBaseStore(object):
|
|||
|
||||
return txn.execute(sql, keyvalues.values())
|
||||
|
||||
def _simple_max_id(self, table):
|
||||
"""Executes a SELECT query on the named table, expecting to return the
|
||||
max value for the column "id".
|
||||
|
||||
Args:
|
||||
table : string giving the table name
|
||||
"""
|
||||
sql = "SELECT MAX(id) AS id FROM %s" % table
|
||||
|
||||
def func(txn):
|
||||
txn.execute(sql)
|
||||
max_id = self.cursor_to_dict(txn)[0]["id"]
|
||||
if max_id is None:
|
||||
return 0
|
||||
return max_id
|
||||
|
||||
return self.runInteraction("_simple_max_id", func)
|
||||
|
||||
def get_next_stream_id(self):
|
||||
with self._next_stream_id_lock:
|
||||
i = self._next_stream_id
|
||||
|
|
@ -791,129 +727,3 @@ class _RollbackButIsFineException(Exception):
|
|||
something went wrong.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class Table(object):
|
||||
""" A base class used to store information about a particular table.
|
||||
"""
|
||||
|
||||
table_name = None
|
||||
""" str: The name of the table """
|
||||
|
||||
fields = None
|
||||
""" list: The field names """
|
||||
|
||||
EntryType = None
|
||||
""" Type: A tuple type used to decode the results """
|
||||
|
||||
_select_where_clause = "SELECT %s FROM %s WHERE %s"
|
||||
_select_clause = "SELECT %s FROM %s"
|
||||
_insert_clause = "REPLACE INTO %s (%s) VALUES (%s)"
|
||||
|
||||
@classmethod
|
||||
def select_statement(cls, where_clause=None):
|
||||
"""
|
||||
Args:
|
||||
where_clause (str): The WHERE clause to use.
|
||||
|
||||
Returns:
|
||||
str: An SQL statement to select rows from the table with the given
|
||||
WHERE clause.
|
||||
"""
|
||||
if where_clause:
|
||||
return cls._select_where_clause % (
|
||||
", ".join(cls.fields),
|
||||
cls.table_name,
|
||||
where_clause
|
||||
)
|
||||
else:
|
||||
return cls._select_clause % (
|
||||
", ".join(cls.fields),
|
||||
cls.table_name,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def insert_statement(cls):
|
||||
return cls._insert_clause % (
|
||||
cls.table_name,
|
||||
", ".join(cls.fields),
|
||||
", ".join(["?"] * len(cls.fields)),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def decode_single_result(cls, results):
|
||||
""" Given an iterable of tuples, return a single instance of
|
||||
`EntryType` or None if the iterable is empty
|
||||
Args:
|
||||
results (list): The results list to convert to `EntryType`
|
||||
Returns:
|
||||
EntryType: An instance of `EntryType`
|
||||
"""
|
||||
results = list(results)
|
||||
if results:
|
||||
return cls.EntryType(*results[0])
|
||||
else:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def decode_results(cls, results):
|
||||
""" Given an iterable of tuples, return a list of `EntryType`
|
||||
Args:
|
||||
results (list): The results list to convert to `EntryType`
|
||||
|
||||
Returns:
|
||||
list: A list of `EntryType`
|
||||
"""
|
||||
return [cls.EntryType(*row) for row in results]
|
||||
|
||||
@classmethod
|
||||
def get_fields_string(cls, prefix=None):
|
||||
if prefix:
|
||||
to_join = ("%s.%s" % (prefix, f) for f in cls.fields)
|
||||
else:
|
||||
to_join = cls.fields
|
||||
|
||||
return ", ".join(to_join)
|
||||
|
||||
|
||||
class JoinHelper(object):
|
||||
""" Used to help do joins on tables by looking at the tables' fields and
|
||||
creating a list of unique fields to use with SELECTs and a namedtuple
|
||||
to dump the results into.
|
||||
|
||||
Attributes:
|
||||
tables (list): List of `Table` classes
|
||||
EntryType (type)
|
||||
"""
|
||||
|
||||
def __init__(self, *tables):
|
||||
self.tables = tables
|
||||
|
||||
res = []
|
||||
for table in self.tables:
|
||||
res += [f for f in table.fields if f not in res]
|
||||
|
||||
self.EntryType = namedtuple("JoinHelperEntry", res)
|
||||
|
||||
def get_fields(self, **prefixes):
|
||||
"""Get a string representing a list of fields for use in SELECT
|
||||
statements with the given prefixes applied to each.
|
||||
|
||||
For example::
|
||||
|
||||
JoinHelper(PdusTable, StateTable).get_fields(
|
||||
PdusTable="pdus",
|
||||
StateTable="state"
|
||||
)
|
||||
"""
|
||||
res = []
|
||||
for field in self.EntryType._fields:
|
||||
for table in self.tables:
|
||||
if field in table.fields:
|
||||
res.append("%s.%s" % (prefixes[table.__name__], field))
|
||||
break
|
||||
|
||||
return ", ".join(res)
|
||||
|
||||
def decode_results(self, rows):
|
||||
return [self.EntryType(*row) for row in rows]
|
||||
|
|
|
|||
|
|
@ -154,98 +154,6 @@ class EventFederationStore(SQLBaseStore):
|
|||
|
||||
return results
|
||||
|
||||
def _get_latest_state_in_room(self, txn, room_id, type, state_key):
|
||||
event_ids = self._simple_select_onecol_txn(
|
||||
txn,
|
||||
table="state_forward_extremities",
|
||||
keyvalues={
|
||||
"room_id": room_id,
|
||||
"type": type,
|
||||
"state_key": state_key,
|
||||
},
|
||||
retcol="event_id",
|
||||
)
|
||||
|
||||
results = []
|
||||
for event_id in event_ids:
|
||||
hashes = self._get_event_reference_hashes_txn(txn, event_id)
|
||||
prev_hashes = {
|
||||
k: encode_base64(v) for k, v in hashes.items()
|
||||
if k == "sha256"
|
||||
}
|
||||
results.append((event_id, prev_hashes))
|
||||
|
||||
return results
|
||||
|
||||
def _get_prev_events(self, txn, event_id):
|
||||
results = self._get_prev_events_and_state(
|
||||
txn,
|
||||
event_id,
|
||||
is_state=0,
|
||||
)
|
||||
|
||||
return [(e_id, h, ) for e_id, h, _ in results]
|
||||
|
||||
def _get_prev_state(self, txn, event_id):
|
||||
results = self._get_prev_events_and_state(
|
||||
txn,
|
||||
event_id,
|
||||
is_state=True,
|
||||
)
|
||||
|
||||
return [(e_id, h, ) for e_id, h, _ in results]
|
||||
|
||||
def _get_prev_events_and_state(self, txn, event_id, is_state=None):
|
||||
keyvalues = {
|
||||
"event_id": event_id,
|
||||
}
|
||||
|
||||
if is_state is not None:
|
||||
keyvalues["is_state"] = bool(is_state)
|
||||
|
||||
res = self._simple_select_list_txn(
|
||||
txn,
|
||||
table="event_edges",
|
||||
keyvalues=keyvalues,
|
||||
retcols=["prev_event_id", "is_state"],
|
||||
)
|
||||
|
||||
hashes = self._get_prev_event_hashes_txn(txn, event_id)
|
||||
|
||||
results = []
|
||||
for d in res:
|
||||
edge_hash = self._get_event_reference_hashes_txn(txn, d["prev_event_id"])
|
||||
edge_hash.update(hashes.get(d["prev_event_id"], {}))
|
||||
prev_hashes = {
|
||||
k: encode_base64(v)
|
||||
for k, v in edge_hash.items()
|
||||
if k == "sha256"
|
||||
}
|
||||
results.append((d["prev_event_id"], prev_hashes, d["is_state"]))
|
||||
|
||||
return results
|
||||
|
||||
def _get_auth_events(self, txn, event_id):
|
||||
auth_ids = self._simple_select_onecol_txn(
|
||||
txn,
|
||||
table="event_auth",
|
||||
keyvalues={
|
||||
"event_id": event_id,
|
||||
},
|
||||
retcol="auth_id",
|
||||
)
|
||||
|
||||
results = []
|
||||
for auth_id in auth_ids:
|
||||
hashes = self._get_event_reference_hashes_txn(txn, auth_id)
|
||||
prev_hashes = {
|
||||
k: encode_base64(v) for k, v in hashes.items()
|
||||
if k == "sha256"
|
||||
}
|
||||
results.append((auth_id, prev_hashes))
|
||||
|
||||
return results
|
||||
|
||||
def get_min_depth(self, room_id):
|
||||
""" For hte given room, get the minimum depth we have seen for it.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -890,22 +890,11 @@ class EventsStore(SQLBaseStore):
|
|||
|
||||
return ev
|
||||
|
||||
def _parse_events(self, rows):
|
||||
return self.runInteraction(
|
||||
"_parse_events", self._parse_events_txn, rows
|
||||
)
|
||||
|
||||
def _parse_events_txn(self, txn, rows):
|
||||
event_ids = [r["event_id"] for r in rows]
|
||||
|
||||
return self._get_events_txn(txn, event_ids)
|
||||
|
||||
def _has_been_redacted_txn(self, txn, event):
|
||||
sql = "SELECT event_id FROM redactions WHERE redacts = ?"
|
||||
txn.execute(sql, (event.event_id,))
|
||||
result = txn.fetchone()
|
||||
return result[0] if result else None
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def count_daily_messages(self):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from ._base import SQLBaseStore, Table
|
||||
from ._base import SQLBaseStore
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.api.errors import StoreError
|
||||
|
|
@ -149,5 +149,5 @@ class PusherStore(SQLBaseStore):
|
|||
)
|
||||
|
||||
|
||||
class PushersTable(Table):
|
||||
class PushersTable(object):
|
||||
table_name = "pushers"
|
||||
|
|
|
|||
|
|
@ -178,12 +178,6 @@ class RoomMemberStore(SQLBaseStore):
|
|||
|
||||
return joined_domains
|
||||
|
||||
def _get_members_query(self, where_clause, where_values):
|
||||
return self.runInteraction(
|
||||
"get_members_query", self._get_members_events_txn,
|
||||
where_clause, where_values
|
||||
).addCallbacks(self._get_events)
|
||||
|
||||
def _get_members_events_txn(self, txn, room_id, membership=None, user_id=None):
|
||||
rows = self._get_members_rows_txn(
|
||||
txn,
|
||||
|
|
|
|||
|
|
@ -24,41 +24,6 @@ from synapse.crypto.event_signing import compute_event_reference_hash
|
|||
class SignatureStore(SQLBaseStore):
|
||||
"""Persistence for event signatures and hashes"""
|
||||
|
||||
def _get_event_content_hashes_txn(self, txn, event_id):
|
||||
"""Get all the hashes for a given Event.
|
||||
Args:
|
||||
txn (cursor):
|
||||
event_id (str): Id for the Event.
|
||||
Returns:
|
||||
A dict of algorithm -> hash.
|
||||
"""
|
||||
query = (
|
||||
"SELECT algorithm, hash"
|
||||
" FROM event_content_hashes"
|
||||
" WHERE event_id = ?"
|
||||
)
|
||||
txn.execute(query, (event_id, ))
|
||||
return dict(txn.fetchall())
|
||||
|
||||
def _store_event_content_hash_txn(self, txn, event_id, algorithm,
|
||||
hash_bytes):
|
||||
"""Store a hash for a Event
|
||||
Args:
|
||||
txn (cursor):
|
||||
event_id (str): Id for the Event.
|
||||
algorithm (str): Hashing algorithm.
|
||||
hash_bytes (bytes): Hash function output bytes.
|
||||
"""
|
||||
self._simple_insert_txn(
|
||||
txn,
|
||||
"event_content_hashes",
|
||||
{
|
||||
"event_id": event_id,
|
||||
"algorithm": algorithm,
|
||||
"hash": buffer(hash_bytes),
|
||||
},
|
||||
)
|
||||
|
||||
def get_event_reference_hashes(self, event_ids):
|
||||
def f(txn):
|
||||
return [
|
||||
|
|
@ -123,80 +88,3 @@ class SignatureStore(SQLBaseStore):
|
|||
table="event_reference_hashes",
|
||||
values=vals,
|
||||
)
|
||||
|
||||
def _get_event_signatures_txn(self, txn, event_id):
|
||||
"""Get all the signatures for a given PDU.
|
||||
Args:
|
||||
txn (cursor):
|
||||
event_id (str): Id for the Event.
|
||||
Returns:
|
||||
A dict of sig name -> dict(key_id -> signature_bytes)
|
||||
"""
|
||||
query = (
|
||||
"SELECT signature_name, key_id, signature"
|
||||
" FROM event_signatures"
|
||||
" WHERE event_id = ? "
|
||||
)
|
||||
txn.execute(query, (event_id, ))
|
||||
rows = txn.fetchall()
|
||||
|
||||
res = {}
|
||||
|
||||
for name, key, sig in rows:
|
||||
res.setdefault(name, {})[key] = sig
|
||||
|
||||
return res
|
||||
|
||||
def _store_event_signature_txn(self, txn, event_id, signature_name, key_id,
|
||||
signature_bytes):
|
||||
"""Store a signature from the origin server for a PDU.
|
||||
Args:
|
||||
txn (cursor):
|
||||
event_id (str): Id for the Event.
|
||||
origin (str): origin of the Event.
|
||||
key_id (str): Id for the signing key.
|
||||
signature (bytes): The signature.
|
||||
"""
|
||||
self._simple_insert_txn(
|
||||
txn,
|
||||
"event_signatures",
|
||||
{
|
||||
"event_id": event_id,
|
||||
"signature_name": signature_name,
|
||||
"key_id": key_id,
|
||||
"signature": buffer(signature_bytes),
|
||||
},
|
||||
)
|
||||
|
||||
def _get_prev_event_hashes_txn(self, txn, event_id):
|
||||
"""Get all the hashes for previous PDUs of a PDU
|
||||
Args:
|
||||
txn (cursor):
|
||||
event_id (str): Id for the Event.
|
||||
Returns:
|
||||
dict of (pdu_id, origin) -> dict of algorithm -> hash_bytes.
|
||||
"""
|
||||
query = (
|
||||
"SELECT prev_event_id, algorithm, hash"
|
||||
" FROM event_edge_hashes"
|
||||
" WHERE event_id = ?"
|
||||
)
|
||||
txn.execute(query, (event_id, ))
|
||||
results = {}
|
||||
for prev_event_id, algorithm, hash_bytes in txn.fetchall():
|
||||
hashes = results.setdefault(prev_event_id, {})
|
||||
hashes[algorithm] = hash_bytes
|
||||
return results
|
||||
|
||||
def _store_prev_event_hash_txn(self, txn, event_id, prev_event_id,
|
||||
algorithm, hash_bytes):
|
||||
self._simple_insert_txn(
|
||||
txn,
|
||||
"event_edge_hashes",
|
||||
{
|
||||
"event_id": event_id,
|
||||
"prev_event_id": prev_event_id,
|
||||
"algorithm": algorithm,
|
||||
"hash": buffer(hash_bytes),
|
||||
},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -20,8 +20,6 @@ from synapse.util.caches.descriptors import (
|
|||
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.util.stringutils import random_string
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
|
@ -428,7 +426,3 @@ class StateStore(SQLBaseStore):
|
|||
}
|
||||
|
||||
defer.returnValue(results)
|
||||
|
||||
|
||||
def _make_group_id(clock):
|
||||
return str(int(clock.time_msec())) + random_string(5)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue