tagliatelle

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

include-admin-orphans.go (1466B)


      1 package main
      2 
      3 import (
      4     "log"
      5     "net/http"
      6     "os"
      7 )
      8 
      9 func getOrphanedFiles(uploadDir string) (OrphanData, error) {
     10 	diskFiles, err := getFilesOnDisk(uploadDir)
     11 	if err != nil {
     12 		return OrphanData{}, err
     13 	}
     14 	dbFiles, err := getFilesInDB()
     15 	if err != nil {
     16 		return OrphanData{}, err
     17 	}
     18 
     19 	// Build a set of disk files for reverse lookup
     20 	diskFileSet := make(map[string]bool, len(diskFiles))
     21 	for _, f := range diskFiles {
     22 		diskFileSet[f] = true
     23 	}
     24 
     25 	var orphans []string
     26 	for _, f := range diskFiles {
     27 		if !dbFiles[f] {
     28 			orphans = append(orphans, f)
     29 		}
     30 	}
     31 
     32 	var reverseOrphans []string
     33 	for f := range dbFiles {
     34 		if !diskFileSet[f] {
     35 			reverseOrphans = append(reverseOrphans, f)
     36 		}
     37 	}
     38 
     39 	return OrphanData{
     40 		Orphans:        orphans,
     41 		ReverseOrphans: reverseOrphans,
     42 	}, nil
     43 }
     44 
     45 func orphansHandler(w http.ResponseWriter, r *http.Request) {
     46 	orphanData, err := getOrphanedFiles(config.UploadDir)
     47 	if err != nil {
     48 		log.Printf("Error: orphansHandler: failed to read orphaned files: %v", err)
     49 		renderError(w, "Error reading orphaned files", http.StatusInternalServerError)
     50 		return
     51 	}
     52 	pageData := buildPageData("Orphaned Files", orphanData)
     53 	renderTemplate(w, "orphans.html", pageData)
     54 }
     55 
     56 func getFilesOnDisk(uploadDir string) ([]string, error) {
     57 	entries, err := os.ReadDir(uploadDir)
     58 	if err != nil {
     59 		return nil, err
     60 	}
     61 	var files []string
     62 	for _, e := range entries {
     63 		if !e.IsDir() {
     64 			files = append(files, e.Name())
     65 		}
     66 	}
     67 	return files, nil
     68 }