tagliatelle

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

include-admin-orphans.go (1378B)


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