feat: image variants cache panel

This commit is contained in:
fsylvain committed 2026-10-08 21:13:32 +02:00
1 parent 951fef18ba
commit d768668014
53 files changed
+5809 -46

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
import { useApi } from '@/composables/useApi'
export type CachePurgeScope = 'all' | 'unused' | 'variant' | 'image'
export interface CacheVariantStat {
name: string
enabled: boolean
files: number
bytes: number
}
export interface CacheImageStat {
id: number
filename: string
url: string
files: number
bytes: number
}
export interface CacheStats {
generated_files: number
disk_used: number
variants_defined: number
variants_enabled: number
variants_disabled: number
rejected_requests: number
rejected_window_days: number
unused: { files: number; bytes: number; days: number }
by_variant: CacheVariantStat[]
top_images: CacheImageStat[]
}
export interface CachePurgeRequest {
scope: CachePurgeScope
variant?: string
image_id?: number
}
export interface CachePurgeResult {
scope: CachePurgeScope
purged_files: number
purged_bytes: number
failed_files: number
}
const JSON_HEADERS = { 'Content-Type': 'application/json' }
const CACHE_PATH = '/v1/image-variants/cache'
export function useVariantCache() {
const { request } = useApi()
function getStats(): Promise<CacheStats> {
return request<CacheStats>(CACHE_PATH)
}
function purge(input: CachePurgeRequest): Promise<CachePurgeResult> {
return request<CachePurgeResult>(`${CACHE_PATH}/purge`, {
method: 'POST',
headers: JSON_HEADERS,
body: JSON.stringify(input),
})
}
return { getStats, purge }
}