package main import ( "fmt" "os" "path/filepath" "inou/lib" ) func main() { if len(os.Args) < 2 { fmt.Println("Usage: nuke-imaging ") os.Exit(1) } dossierID := os.Args[1] if len(dossierID) != 16 { fmt.Printf("Invalid dossier ID: %s (must be 16 hex characters)\n", dossierID) os.Exit(1) } if err := lib.Init(); err != nil { fmt.Printf("Error initializing: %v\n", err) os.Exit(1) } defer lib.DBClose() // Verify dossier exists dossierEntries, err := lib.EntryRead("", dossierID, &lib.Filter{Category: 0}) if err != nil || len(dossierEntries) == 0 { fmt.Printf("Error: dossier %s not found\n", dossierID) os.Exit(1) } fmt.Printf("Dossier: %s\n", dossierEntries[0].Summary) // Delete imaging entries (Category 1) — EntryDelete removes object files too imaging, _ := lib.EntryRead("", dossierID, &lib.Filter{Category: lib.CategoryImaging}) if len(imaging) > 0 { fmt.Printf("Deleting %d imaging entries...\n", len(imaging)) if err := lib.EntryDelete("", dossierID, &lib.Filter{Category: lib.CategoryImaging}); err != nil { fmt.Printf("Error: %v\n", err) os.Exit(1) } } // Delete upload entries (Category 5) — EntryDelete removes object files too uploads, _ := lib.EntryRead("", dossierID, &lib.Filter{Category: lib.CategoryUpload}) if len(uploads) > 0 { fmt.Printf("Deleting %d upload entries...\n", len(uploads)) if err := lib.EntryDelete("", dossierID, &lib.Filter{Category: lib.CategoryUpload}); err != nil { fmt.Printf("Error: %v\n", err) os.Exit(1) } } // Remove upload files on disk uploadDir := filepath.Join("/tank/inou/uploads", dossierID) if info, err := os.Stat(uploadDir); err == nil && info.IsDir() { fmt.Printf("Removing upload files: %s\n", uploadDir) os.RemoveAll(uploadDir) } if len(imaging) == 0 && len(uploads) == 0 { fmt.Println("No imaging or upload data found.") } else { fmt.Println("Done.") } }