mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 03:54:52 -04:00
Convert simple_delete to async/await. (#8191)
This commit is contained in:
parent
9b7ac03af3
commit
b71d4a094c
5 changed files with 90 additions and 37 deletions
|
@ -614,6 +614,7 @@ class DatabasePool(object):
|
|||
"""Runs a single query for a result set.
|
||||
|
||||
Args:
|
||||
desc: description of the transaction, for logging and metrics
|
||||
decoder - The function which can resolve the cursor results to
|
||||
something meaningful.
|
||||
query - The query string to execute
|
||||
|
@ -649,7 +650,7 @@ class DatabasePool(object):
|
|||
or_ignore: bool stating whether an exception should be raised
|
||||
when a conflicting row already exists. If True, False will be
|
||||
returned by the function instead
|
||||
desc: string giving a description of the transaction
|
||||
desc: description of the transaction, for logging and metrics
|
||||
|
||||
Returns:
|
||||
Whether the row was inserted or not. Only useful when `or_ignore` is True
|
||||
|
@ -686,7 +687,7 @@ class DatabasePool(object):
|
|||
Args:
|
||||
table: string giving the table name
|
||||
values: dict of new column names and values for them
|
||||
desc: string giving a description of the transaction
|
||||
desc: description of the transaction, for logging and metrics
|
||||
"""
|
||||
await self.runInteraction(desc, self.simple_insert_many_txn, table, values)
|
||||
|
||||
|
@ -700,7 +701,6 @@ class DatabasePool(object):
|
|||
txn: The transaction to use.
|
||||
table: string giving the table name
|
||||
values: dict of new column names and values for them
|
||||
desc: string giving a description of the transaction
|
||||
"""
|
||||
if not values:
|
||||
return
|
||||
|
@ -755,6 +755,7 @@ class DatabasePool(object):
|
|||
keyvalues: The unique key columns and their new values
|
||||
values: The nonunique columns and their new values
|
||||
insertion_values: additional key/values to use only when inserting
|
||||
desc: description of the transaction, for logging and metrics
|
||||
lock: True to lock the table when doing the upsert.
|
||||
Returns:
|
||||
Native upserts always return None. Emulated upserts return True if a
|
||||
|
@ -1081,6 +1082,7 @@ class DatabasePool(object):
|
|||
retcols: list of strings giving the names of the columns to return
|
||||
allow_none: If true, return None instead of failing if the SELECT
|
||||
statement returns no rows
|
||||
desc: description of the transaction, for logging and metrics
|
||||
"""
|
||||
return await self.runInteraction(
|
||||
desc, self.simple_select_one_txn, table, keyvalues, retcols, allow_none
|
||||
|
@ -1166,6 +1168,7 @@ class DatabasePool(object):
|
|||
table: table name
|
||||
keyvalues: column names and values to select the rows with
|
||||
retcol: column whos value we wish to retrieve.
|
||||
desc: description of the transaction, for logging and metrics
|
||||
|
||||
Returns:
|
||||
Results in a list
|
||||
|
@ -1190,6 +1193,7 @@ class DatabasePool(object):
|
|||
column names and values to select the rows with, or None to not
|
||||
apply a WHERE clause.
|
||||
retcols: the names of the columns to return
|
||||
desc: description of the transaction, for logging and metrics
|
||||
|
||||
Returns:
|
||||
A list of dictionaries.
|
||||
|
@ -1243,14 +1247,16 @@ class DatabasePool(object):
|
|||
"""Executes a SELECT query on the named table, which may return zero or
|
||||
more rows, returning the result as a list of dicts.
|
||||
|
||||
Filters rows by if value of `column` is in `iterable`.
|
||||
Filters rows by whether the value of `column` is in `iterable`.
|
||||
|
||||
Args:
|
||||
table: string giving the table name
|
||||
column: column name to test for inclusion against `iterable`
|
||||
iterable: list
|
||||
keyvalues: dict of column names and values to select the rows with
|
||||
retcols: list of strings giving the names of the columns to return
|
||||
keyvalues: dict of column names and values to select the rows with
|
||||
desc: description of the transaction, for logging and metrics
|
||||
batch_size: the number of rows for each select query
|
||||
"""
|
||||
results = [] # type: List[Dict[str, Any]]
|
||||
|
||||
|
@ -1291,7 +1297,7 @@ class DatabasePool(object):
|
|||
"""Executes a SELECT query on the named table, which may return zero or
|
||||
more rows, returning the result as a list of dicts.
|
||||
|
||||
Filters rows by if value of `column` is in `iterable`.
|
||||
Filters rows by whether the value of `column` is in `iterable`.
|
||||
|
||||
Args:
|
||||
txn: Transaction object
|
||||
|
@ -1367,6 +1373,7 @@ class DatabasePool(object):
|
|||
table: string giving the table name
|
||||
keyvalues: dict of column names and values to select the row with
|
||||
updatevalues: dict giving column names and values to update
|
||||
desc: description of the transaction, for logging and metrics
|
||||
"""
|
||||
await self.runInteraction(
|
||||
desc, self.simple_update_one_txn, table, keyvalues, updatevalues
|
||||
|
@ -1426,6 +1433,7 @@ class DatabasePool(object):
|
|||
Args:
|
||||
table: string giving the table name
|
||||
keyvalues: dict of column names and values to select the row with
|
||||
desc: description of the transaction, for logging and metrics
|
||||
"""
|
||||
await self.runInteraction(desc, self.simple_delete_one_txn, table, keyvalues)
|
||||
|
||||
|
@ -1451,13 +1459,38 @@ class DatabasePool(object):
|
|||
if txn.rowcount > 1:
|
||||
raise StoreError(500, "More than one row matched (%s)" % (table,))
|
||||
|
||||
def simple_delete(self, table: str, keyvalues: Dict[str, Any], desc: str):
|
||||
return self.runInteraction(desc, self.simple_delete_txn, table, keyvalues)
|
||||
async def simple_delete(
|
||||
self, table: str, keyvalues: Dict[str, Any], desc: str
|
||||
) -> int:
|
||||
"""Executes a DELETE query on the named table.
|
||||
|
||||
Filters rows by the key-value pairs.
|
||||
|
||||
Args:
|
||||
table: string giving the table name
|
||||
keyvalues: dict of column names and values to select the row with
|
||||
desc: description of the transaction, for logging and metrics
|
||||
|
||||
Returns:
|
||||
The number of deleted rows.
|
||||
"""
|
||||
return await self.runInteraction(desc, self.simple_delete_txn, table, keyvalues)
|
||||
|
||||
@staticmethod
|
||||
def simple_delete_txn(
|
||||
txn: LoggingTransaction, table: str, keyvalues: Dict[str, Any]
|
||||
) -> int:
|
||||
"""Executes a DELETE query on the named table.
|
||||
|
||||
Filters rows by the key-value pairs.
|
||||
|
||||
Args:
|
||||
table: string giving the table name
|
||||
keyvalues: dict of column names and values to select the row with
|
||||
|
||||
Returns:
|
||||
The number of deleted rows.
|
||||
"""
|
||||
sql = "DELETE FROM %s WHERE %s" % (
|
||||
table,
|
||||
" AND ".join("%s = ?" % (k,) for k in keyvalues),
|
||||
|
@ -1474,6 +1507,20 @@ class DatabasePool(object):
|
|||
keyvalues: Dict[str, Any],
|
||||
desc: str,
|
||||
) -> int:
|
||||
"""Executes a DELETE query on the named table.
|
||||
|
||||
Filters rows by if value of `column` is in `iterable`.
|
||||
|
||||
Args:
|
||||
table: string giving the table name
|
||||
column: column name to test for inclusion against `iterable`
|
||||
iterable: list
|
||||
keyvalues: dict of column names and values to select the rows with
|
||||
desc: description of the transaction, for logging and metrics
|
||||
|
||||
Returns:
|
||||
Number rows deleted
|
||||
"""
|
||||
return await self.runInteraction(
|
||||
desc, self.simple_delete_many_txn, table, column, iterable, keyvalues
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue