feat(backend): storage trash with seven day retention, trashed files are not fetched again automatically
This commit is contained in:
1 parent
c20e132872
commit
f2c245707a
11 files changed
+680
-6
No files matched your search
@@ -106,6 +106,8 @@ async def capture_media( # noqa: PLR0913
|
||||
chat_id: int,
|
||||
message_id: int,
|
||||
toggles: CaptureToggles,
|
||||
*,
|
||||
force: bool = False,
|
||||
) -> bool:
|
||||
kind, obj = media_object(message)
|
||||
if obj is None:
|
||||
@@ -117,6 +119,7 @@ async def capture_media( # noqa: PLR0913
|
||||
mime = getattr(obj, "mime_type", None)
|
||||
storage_key: str | None = None
|
||||
downloaded = False
|
||||
evicted = False
|
||||
flood: FloodWait | FloodPremiumWait | None = None
|
||||
if want:
|
||||
existing = await repository.current_media(
|
||||
@@ -131,7 +134,7 @@ async def capture_media( # noqa: PLR0913
|
||||
storage_key = existing["storage_key"]
|
||||
file_size = existing["file_size"]
|
||||
downloaded = True
|
||||
else:
|
||||
elif force or not await repository.is_evicted(ctx.pool, unique_id):
|
||||
target = _download_target(message)
|
||||
try:
|
||||
data = await _download(client, target, chat_id, message_id)
|
||||
@@ -142,6 +145,8 @@ async def capture_media( # noqa: PLR0913
|
||||
storage_key = ctx.storage.put(data)
|
||||
file_size = len(data)
|
||||
downloaded = True
|
||||
else:
|
||||
evicted = True
|
||||
await repository.insert_media(
|
||||
ctx.pool,
|
||||
ctx.account_id,
|
||||
@@ -154,7 +159,14 @@ async def capture_media( # noqa: PLR0913
|
||||
ttl,
|
||||
unique_id,
|
||||
downloaded=downloaded,
|
||||
evicted=evicted,
|
||||
)
|
||||
if (
|
||||
force
|
||||
and storage_key is not None
|
||||
and await repository.unevict(ctx.pool, unique_id, storage_key, file_size)
|
||||
):
|
||||
ctx.storage.purge(storage_key)
|
||||
if flood is not None:
|
||||
raise flood
|
||||
return downloaded or not want
|
||||
Reference in new issue
Block a user