项目文件夹

文件
wehub-resource-sync 2c632336aa
CI / Viewer CI (push) Successful in 13m37s
CI / Core CI (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:32:38 +08:00

52 行
1.9 KiB
Python

from __future__ import annotations
import shutil
from typing import Any
from viewer.api.store_components import ViewerStoreComponent
class ViewerMutationStore(ViewerStoreComponent):
def update_record_rating(self, record_id: str, rating: int | None) -> dict[str, Any] | None:
updated = self.record_store.update_rating(record_id, rating)
self.stats.invalidate_stats_cache()
return updated if isinstance(updated, dict) else None
def update_record_secondary_rating(
self,
record_id: str,
secondary_rating: int | None,
) -> dict[str, Any] | None:
updated = self.record_store.update_secondary_rating(record_id, secondary_rating)
self.stats.invalidate_stats_cache()
return updated if isinstance(updated, dict) else None
def delete_record(self, record_id: str) -> bool:
record = self.record_store.load_record(record_id)
if not isinstance(record, dict):
return False
source = record.get("source")
run_id = source.get("run_id") if isinstance(source, dict) else None
if isinstance(run_id, str) and run_id:
for path in (
self.repo.layout.run_staging_dir(run_id) / record_id,
self.repo.layout.run_failures_dir(run_id) / record_id,
):
if path.exists():
shutil.rmtree(path)
deleted = self.record_store.delete_record(record_id)
if deleted:
self.stats.invalidate_stats_cache()
return deleted
def delete_staging_entry(self, run_id: str, record_id: str) -> bool:
deleted_any = False
for path in (
self.repo.layout.run_staging_dir(run_id) / record_id,
self.repo.layout.run_failures_dir(run_id) / record_id,
):
if path.exists():
shutil.rmtree(path)
deleted_any = True
return deleted_any