feat(settings): add compact database card to General section
Adds get_database_info and vacuum_database Tauri commands. The General section now shows current DB size and reclaimable space on load, with a Compact now button that runs PRAGMA wal_checkpoint(FULL) + VACUUM and reports how many MB were freed. Button disables automatically when the database is already compact (< 0.5 MB reclaimable).
This commit is contained in:
@@ -71,6 +71,17 @@ export interface ImageTag {
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface DatabaseInfo {
|
||||
size_mb: number;
|
||||
reclaimable_mb: number;
|
||||
}
|
||||
|
||||
export interface VacuumResult {
|
||||
before_mb: number;
|
||||
after_mb: number;
|
||||
freed_mb: number;
|
||||
}
|
||||
|
||||
export interface TaggerModelStatus {
|
||||
model_id: string;
|
||||
model_name: string;
|
||||
@@ -340,6 +351,8 @@ interface GalleryState {
|
||||
toggleTaggingQueueFolder: (folderId: number) => void;
|
||||
setTaggingQueueFolderIds: (folderIds: number[]) => void;
|
||||
openAppDataFolder: () => Promise<void>;
|
||||
getDatabaseInfo: () => Promise<DatabaseInfo>;
|
||||
vacuumDatabase: () => Promise<VacuumResult>;
|
||||
retryFailedEmbeddings: (folderId: number) => Promise<void>;
|
||||
updateImageDetails: (imageId: number, updates: { favorite?: boolean; rating?: number }) => Promise<void>;
|
||||
setCacheDir: (dir: string) => void;
|
||||
@@ -1350,6 +1363,10 @@ export const useGalleryStore = create<GalleryState>((set, get) => ({
|
||||
await invoke("open_app_data_folder");
|
||||
},
|
||||
|
||||
getDatabaseInfo: () => invoke<DatabaseInfo>("get_database_info"),
|
||||
|
||||
vacuumDatabase: () => invoke<VacuumResult>("vacuum_database"),
|
||||
|
||||
loadTaggerModelStatus: async () => {
|
||||
try {
|
||||
const taggerModelStatus = await invoke<TaggerModelStatus>("get_tagger_model_status");
|
||||
|
||||
Reference in New Issue
Block a user