feat: safe deletion, album/asset delete, trash, README update
- volume-aware deletion: read-only volumes remove DB only, writable volumes soft-delete to trash with configurable grace period - trash page with restore, worker purge sweep (TRASH_RETENTION_DAYS) - album delete endpoint + sidebar trash icon - asset delete from timeline selection toolbar - all listing queries exclude trashed assets (deleted_at IS NULL) - timeline ordered by EXIF capture date, date-summary endpoint - README rewritten with features, setup, full env var table
This commit is contained in:
@@ -38,6 +38,23 @@ pub trait AssetRepository: Send + Sync {
|
||||
) -> Result<Vec<(chrono::NaiveDate, u64)>, DomainError>;
|
||||
async fn save(&self, asset: &Asset) -> Result<(), DomainError>;
|
||||
async fn delete(&self, id: &SystemId) -> Result<(), DomainError>;
|
||||
async fn soft_delete(
|
||||
&self,
|
||||
id: &SystemId,
|
||||
deleted_by: &SystemId,
|
||||
) -> Result<(), DomainError>;
|
||||
async fn restore(&self, id: &SystemId) -> Result<(), DomainError>;
|
||||
async fn find_trashed_before(
|
||||
&self,
|
||||
cutoff: chrono::DateTime<chrono::Utc>,
|
||||
) -> Result<Vec<Asset>, DomainError>;
|
||||
async fn count_trashed(&self, owner_id: &SystemId) -> Result<u64, DomainError>;
|
||||
async fn find_trashed_by_owner(
|
||||
&self,
|
||||
owner_id: &SystemId,
|
||||
limit: u32,
|
||||
offset: u32,
|
||||
) -> Result<Vec<Asset>, DomainError>;
|
||||
}
|
||||
|
||||
// --- AssetMetadataRepository ---
|
||||
|
||||
Reference in New Issue
Block a user