Rename direction to step, apply checks consistently
This commit is contained in:
parent
e36bfbab38
commit
a2866e2e6a
|
@ -97,7 +97,7 @@ class DataStore(RoomMemberStore, RoomStore,
|
|||
db_conn, "events", "stream_ordering"
|
||||
)
|
||||
self._backfill_id_gen = StreamIdGenerator(
|
||||
db_conn, "events", "stream_ordering", direction=-1
|
||||
db_conn, "events", "stream_ordering", step=-1
|
||||
)
|
||||
self._receipts_id_gen = StreamIdGenerator(
|
||||
db_conn, "receipts_linearized", "stream_id"
|
||||
|
|
|
@ -29,16 +29,16 @@ class IdGenerator(object):
|
|||
return self._next_id
|
||||
|
||||
|
||||
def _load_current_id(db_conn, table, column, direction=1):
|
||||
def _load_current_id(db_conn, table, column, step=1):
|
||||
cur = db_conn.cursor()
|
||||
if direction == 1:
|
||||
if step == 1:
|
||||
cur.execute("SELECT MAX(%s) FROM %s" % (column, table,))
|
||||
else:
|
||||
cur.execute("SELECT MIN(%s) FROM %s" % (column, table,))
|
||||
val, = cur.fetchone()
|
||||
cur.close()
|
||||
current_id = int(val) if val else direction
|
||||
return (max if direction == 1 else min)(current_id, direction)
|
||||
current_id = int(val) if val else step
|
||||
return (max if step > 0 else min)(current_id, step)
|
||||
|
||||
|
||||
class StreamIdGenerator(object):
|
||||
|
@ -58,21 +58,21 @@ class StreamIdGenerator(object):
|
|||
:param list extra_tables: List of pairs of database tables and columns to
|
||||
use to source the initial value of the generator from. The value with
|
||||
the largest magnitude is used.
|
||||
:param int direction: which direction the stream ids grow in. +1 to grow
|
||||
:param int step: which direction the stream ids grow in. +1 to grow
|
||||
upwards, -1 to grow downwards.
|
||||
|
||||
Usage:
|
||||
with stream_id_gen.get_next() as stream_id:
|
||||
# ... persist event ...
|
||||
"""
|
||||
def __init__(self, db_conn, table, column, extra_tables=[], direction=1):
|
||||
def __init__(self, db_conn, table, column, extra_tables=[], step=1):
|
||||
self._lock = threading.Lock()
|
||||
self._direction = direction
|
||||
self._current = _load_current_id(db_conn, table, column, direction)
|
||||
self._step = step
|
||||
self._current = _load_current_id(db_conn, table, column, step)
|
||||
for table, column in extra_tables:
|
||||
self._current = (max if direction > 0 else min)(
|
||||
self._current = (max if step > 0 else min)(
|
||||
self._current,
|
||||
_load_current_id(db_conn, table, column, direction)
|
||||
_load_current_id(db_conn, table, column, step)
|
||||
)
|
||||
self._unfinished_ids = deque()
|
||||
|
||||
|
@ -83,7 +83,7 @@ class StreamIdGenerator(object):
|
|||
# ... persist event ...
|
||||
"""
|
||||
with self._lock:
|
||||
self._current += self._direction
|
||||
self._current += self._step
|
||||
next_id = self._current
|
||||
|
||||
self._unfinished_ids.append(next_id)
|
||||
|
@ -106,9 +106,9 @@ class StreamIdGenerator(object):
|
|||
"""
|
||||
with self._lock:
|
||||
next_ids = range(
|
||||
self._current + self._direction,
|
||||
self._current + self._direction * (n + 1),
|
||||
self._direction
|
||||
self._current + self._step,
|
||||
self._current + self._step * (n + 1),
|
||||
self._step
|
||||
)
|
||||
self._current += n
|
||||
|
||||
|
@ -132,7 +132,7 @@ class StreamIdGenerator(object):
|
|||
"""
|
||||
with self._lock:
|
||||
if self._unfinished_ids:
|
||||
return self._unfinished_ids[0] - self._direction
|
||||
return self._unfinished_ids[0] - self._step
|
||||
|
||||
return self._current
|
||||
|
||||
|
|
Loading…
Reference in New Issue