Skip to content

Commit

Permalink
always preserve the current catalogue
Browse files Browse the repository at this point in the history
  • Loading branch information
3ll3d00d committed Sep 11, 2023
1 parent 47f9c70 commit 6d926f8
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
18 changes: 9 additions & 9 deletions ezbeq/catalogue.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,8 +314,6 @@ def __load_next_chunk(self, publisher: Callable[[str], None], version: str, coun
if offset >= count:
logger.info(f'Load complete for {version} in {to_millis(start, time.time())}ms')
else:
if offset == 0:
time.sleep(1)
begin = time.time()
next_offset = offset + limit
select = f"SELECT {UI_FIELDS_STR} FROM catalogue_entry WHERE version = '{version}'"
Expand Down Expand Up @@ -391,7 +389,8 @@ def __load_catalogues(self) -> List[Catalogue]:
logger.info(f"{len(catalogues)} versions available in {self.__db}")
v = catalogues[-1].version
catalogues[-1].meta = {t: self.load_meta(v, t) for t in META_FIELDS}
self.__prune_entries()
if len(catalogues) > 1:
self.__prune_entries(catalogues[-1].version)
else:
try:
if os.path.exists(self.__catalogue_file) and os.path.exists(self.__version_file):
Expand Down Expand Up @@ -520,18 +519,19 @@ def __on_catalogue_update(self, catalogue: Catalogue):
old_versions = [c.version for c in self.__catalogues if c.loaded_at and c.loaded_at < one_day_ago]
self.__catalogues = [i for i in self.__catalogues if i.version not in old_versions]
self.__ws.broadcast(catalogue.meta_msg)
self.__prune_entries()
if len(self.__catalogues) > 1:
self.__prune_entries(self.__catalogues[-1].version)

def __prune_entries(self):
min_loaded_at = int((datetime.now() - timedelta(days=1)).timestamp() * 1000)
logger.info('Pruning catalogues')
def __prune_entries(self, keep_version: str):
min_loaded_at = int((datetime.now() - timedelta(seconds=1)).timestamp() * 1000)
logger.info(f'Pruning catalogues older than {datetime.fromtimestamp(min_loaded_at / 1000).strftime("%c")} except version {keep_version}')
with db_ops(self.__db) as cur:
before = time.time()
cur.execute(f"DELETE FROM catalogue_entry WHERE loaded_at <= {min_loaded_at};")
cur.execute(f"DELETE FROM catalogue_entry WHERE loaded_at <= {min_loaded_at} AND version <> '{keep_version}';")
entries_deleted = cur.rowcount
cur.connection.commit()
cur.execute(
f"DELETE FROM catalogue_meta WHERE version NOT IN (SELECT DISTINCT version FROM catalogue_entry);")
f"DELETE FROM catalogue_meta WHERE version NOT IN (SELECT DISTINCT version FROM catalogue_entry WHERE version <> '{keep_version}');")
meta_deleted = cur.rowcount
cur.connection.commit()
end = time.time()
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "ezbeq"
version = "2.0.0a9"
version = "2.0.0a10"
description = "A webapp which can send beqcatalogue filters to a DSP device"
authors = ["3ll3d00d <mattkhan+ezbeq@gmail.com>"]
license = "MIT"
Expand Down

0 comments on commit 6d926f8

Please sign in to comment.