Compare commits

...

2 commits

Author SHA1 Message Date
434773025b
feat: Remove old articles from database
Some checks failed
Create and publish a Docker image / build-and-push-image (push) Has been cancelled
2025-06-19 18:41:54 +02:00
90a419eebe
fix: Correct datetime import library 2025-06-19 18:41:53 +02:00
3 changed files with 50 additions and 4 deletions

View file

@ -19,6 +19,7 @@ BEE_FEED = "https://babylonbee.com/feed"
BEE_FEED_TEST = "test/resources/feed_short.atom" # NOTE: Switch out when done testing
REFRESH_PERIOD = 3600 # between fetching articles, in seconds
NUM_ARTICLES_TO_KEEP = 50
llm: GroqClient = GroqClient()
repo: IImprovementRepo = ImprovementSupaRepo()
@ -107,6 +108,18 @@ def improve_summary(original_title: str, new_title: str, original_summary: str):
@repeat_every(seconds=REFRESH_PERIOD)
async def refresh_articles():
_ = await fetch_update()
truncate_to(NUM_ARTICLES_TO_KEEP)
def truncate_to(max_num: int = 50):
all = repo.get_all()
if len(all) > max_num:
to_delete = all[max_num:]
to_delete_ids = [a.id for a in to_delete]
try:
_ = repo.remove_all(to_delete_ids)
except ValueError:
print(f"Error deleting articles with IDs: {id}")
@app.get("/update")
@ -128,11 +141,12 @@ def start() -> None:
if __name__ == "__main__":
# start()
## ADD MANUALLY
# adding = keep_only_new_originals(grab_latest_originals())
# improved = improve_originals(adding)
# save_new_improvements(improved)
# migrate to newer version
## SHOW ALL
improved = repo.get_all()
for imp in improved:
imp.original.__post_init__()
@ -144,4 +158,7 @@ if __name__ == "__main__":
print(f"Summary: {imp.summary}")
print("-" * 50)
repo.add_all(improved)
# repo.add_all(improved)
## DELETE TOO_MANY
# truncate_to(48)

View file

@ -19,3 +19,11 @@ class IImprovementRepo(Protocol):
def get_all(self) -> list[Improvement]:
raise NotImplementedError
def remove(self, id: str) -> Improvement:
"""Returns single deleted improvement"""
raise NotImplementedError
def remove_all(self, ids: list[str]) -> list[Improvement]:
"""Returns list of deleted improvements"""
raise NotImplementedError

View file

@ -1,7 +1,6 @@
from datetime import timezone
from datetime import datetime, timezone
from typing import override
from gotrue import datetime
from supabase import Client
from prophet.config import SupaConfig
@ -59,6 +58,28 @@ class ImprovementSupaRepo(IImprovementRepo):
.data
]
@override
def remove(self, id: str) -> Improvement:
resp = (
self.client.table(self.config.TABLE).delete().eq("uuid", id).execute().data
)
if not resp:
raise ValueError
return self._from_tbl_row(resp[0])
@override
def remove_all(self, ids: list[str]) -> list[Improvement]:
resp = (
self.client.table(self.config.TABLE)
.delete()
.in_("uuid", ids)
.execute()
.data
)
if not resp:
raise ValueError
return [self._from_tbl_row(item) for item in resp]
def _to_tbl_row(self, imp: Improvement) -> dict[str, str | int]:
return {
"uuid": imp.id,