tagliatelle

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

commit a31696318970bf876ca2d915484b488415f927b6
parent 9255c09a87823910385404d286980f9059762857
Author: breadcat <breadcat@users.noreply.github.com>
Date:   Tue, 24 Feb 2026 23:29:29 +0000

Replace repeated pagedata with function

Diffstat:
Minclude-admin.go | 357++++++++++++++++++++++++-------------------------------------------------------
1 file changed, 108 insertions(+), 249 deletions(-)

diff --git a/include-admin.go b/include-admin.go @@ -1,17 +1,43 @@ package main import ( - "database/sql" - "encoding/json" - "fmt" - "io" - "net/http" - "os" - "path/filepath" - "strings" - "time" + "database/sql" + "encoding/json" + "fmt" + "io" + "net/http" + "os" + "path/filepath" + "strings" + "time" ) +type AdminPageData struct { + Config Config + Error string + Success string + OrphanData OrphanData + ActiveTab string + MissingThumbnails []VideoFile +} + +func renderAdminPage(w http.ResponseWriter, r *http.Request, data AdminPageData) { + if data.ActiveTab == "" { + data.ActiveTab = r.FormValue("active_tab") + } + pageData := buildPageData("Admin", data) + renderTemplate(w, "admin.html", pageData) +} + +func currentAdminState(r *http.Request, orphanData OrphanData, missingThumbnails []VideoFile) AdminPageData { + return AdminPageData{ + Config: config, + OrphanData: orphanData, + ActiveTab: r.FormValue("active_tab"), + MissingThumbnails: missingThumbnails, + } +} + func loadConfig() error { config = Config{ DatabasePath: "./database.db", @@ -70,80 +96,33 @@ func adminHandler(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodPost: - action := r.FormValue("action") - - switch action { + switch r.FormValue("action") { case "save", "": handleSaveSettings(w, r, orphanData, missingThumbnails) - return case "backup": err := backupDatabase(config.DatabasePath) - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: errorString(err), - Success: successString(err, "Database backup created successfully!"), - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) - return + data := currentAdminState(r, orphanData, missingThumbnails) + data.Error = errorString(err) + data.Success = successString(err, "Database backup created successfully!") + renderAdminPage(w, r, data) case "vacuum": err := vacuumDatabase(config.DatabasePath) - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: errorString(err), - Success: successString(err, "Database vacuum completed successfully!"), - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) - return + data := currentAdminState(r, orphanData, missingThumbnails) + data.Error = errorString(err) + data.Success = successString(err, "Database vacuum completed successfully!") + renderAdminPage(w, r, data) case "save_aliases": handleSaveAliases(w, r, orphanData, missingThumbnails) - return case "save_sed_rules": handleSaveSedRules(w, r, orphanData, missingThumbnails) - return - } default: - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "", - Success: "", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) + renderAdminPage(w, r, currentAdminState(r, orphanData, missingThumbnails)) } } @@ -153,22 +132,9 @@ func handleSaveAliases(w http.ResponseWriter, r *http.Request, orphanData Orphan var aliases []TagAliasGroup if aliasesJSON != "" { if err := json.Unmarshal([]byte(aliasesJSON), &aliases); err != nil { - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "Invalid aliases JSON: " + err.Error(), - Success: "", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) + data := currentAdminState(r, orphanData, missingThumbnails) + data.Error = "Invalid aliases JSON: " + err.Error() + renderAdminPage(w, r, data) return } } @@ -176,41 +142,15 @@ func handleSaveAliases(w http.ResponseWriter, r *http.Request, orphanData Orphan config.TagAliases = aliases if err := saveConfig(); err != nil { - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "Failed to save configuration: " + err.Error(), - Success: "", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) + data := currentAdminState(r, orphanData, missingThumbnails) + data.Error = "Failed to save configuration: " + err.Error() + renderAdminPage(w, r, data) return } - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "", - Success: "Tag aliases saved successfully!", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) + data := currentAdminState(r, orphanData, missingThumbnails) + data.Success = "Tag aliases saved successfully!" + renderAdminPage(w, r, data) } func handleSaveSettings(w http.ResponseWriter, r *http.Request, orphanData OrphanData, missingThumbnails []VideoFile) { @@ -225,72 +165,58 @@ func handleSaveSettings(w http.ResponseWriter, r *http.Request, orphanData Orpha } if err := validateConfig(newConfig); err != nil { - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: err.Error(), - Success: "", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) + data := currentAdminState(r, orphanData, missingThumbnails) + data.Error = err.Error() + renderAdminPage(w, r, data) return } - needsRestart := (newConfig.DatabasePath != config.DatabasePath || - newConfig.ServerPort != config.ServerPort) + needsRestart := newConfig.DatabasePath != config.DatabasePath || + newConfig.ServerPort != config.ServerPort config = newConfig + if err := saveConfig(); err != nil { - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "Failed to save configuration: " + err.Error(), - Success: "", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) + data := currentAdminState(r, orphanData, missingThumbnails) + data.Error = "Failed to save configuration: " + err.Error() + renderAdminPage(w, r, data) return } - var message string + data := currentAdminState(r, orphanData, missingThumbnails) if needsRestart { - message = "Settings saved successfully! Please restart the server for database/port changes to take effect." + data.Success = "Settings saved successfully! Please restart the server for database/port changes to take effect." } else { - message = "Settings saved successfully!" + data.Success = "Settings saved successfully!" } + renderAdminPage(w, r, data) +} - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "", - Success: message, - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) +func handleSaveSedRules(w http.ResponseWriter, r *http.Request, orphanData OrphanData, missingThumbnails []VideoFile) { + sedRulesJSON := r.FormValue("sed_rules_json") + + var sedRules []SedRule + if sedRulesJSON != "" { + if err := json.Unmarshal([]byte(sedRulesJSON), &sedRules); err != nil { + data := currentAdminState(r, orphanData, missingThumbnails) + data.Error = "Invalid sed rules JSON: " + err.Error() + renderAdminPage(w, r, data) + return + } + } + + config.SedRules = sedRules + + if err := saveConfig(); err != nil { + data := currentAdminState(r, orphanData, missingThumbnails) + data.Error = "Failed to save configuration: " + err.Error() + renderAdminPage(w, r, data) + return + } + + data := currentAdminState(r, orphanData, missingThumbnails) + data.Success = "Sed rules saved successfully!" + renderAdminPage(w, r, data) } func backupDatabase(dbPath string) error { @@ -327,8 +253,7 @@ func vacuumDatabase(dbPath string) error { } defer db.Close() - _, err = db.Exec("VACUUM;") - if err != nil { + if _, err = db.Exec("VACUUM;"); err != nil { return fmt.Errorf("VACUUM failed: %w", err) } @@ -336,88 +261,22 @@ func vacuumDatabase(dbPath string) error { } func getFilesInDB() (map[string]bool, error) { - rows, err := db.Query("SELECT filename FROM files") - if err != nil { - return nil, err - } - defer rows.Close() - - fileMap := make(map[string]bool) - for rows.Next() { - var name string - if err := rows.Scan(&name); err != nil { - return nil, err - } - fileMap[name] = true - } - if err := rows.Err(); err != nil { - return nil, err - } - return fileMap, nil -} - -func handleSaveSedRules(w http.ResponseWriter, r *http.Request, orphanData OrphanData, missingThumbnails []VideoFile) { - sedRulesJSON := r.FormValue("sed_rules_json") + rows, err := db.Query("SELECT filename FROM files") + if err != nil { + return nil, err + } + defer rows.Close() - var sedRules []SedRule - if sedRulesJSON != "" { - if err := json.Unmarshal([]byte(sedRulesJSON), &sedRules); err != nil { - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "Invalid sed rules JSON: " + err.Error(), - Success: "", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) - return + fileMap := make(map[string]bool) + for rows.Next() { + var name string + if err := rows.Scan(&name); err != nil { + return nil, err } + fileMap[name] = true } - - config.SedRules = sedRules - - if err := saveConfig(); err != nil { - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "Failed to save configuration: " + err.Error(), - Success: "", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) - return + if err := rows.Err(); err != nil { + return nil, err } - - pageData := buildPageData("Admin", struct { - Config Config - Error string - Success string - OrphanData OrphanData - ActiveTab string - MissingThumbnails []VideoFile - }{ - Config: config, - Error: "", - Success: "Sed rules saved successfully!", - OrphanData: orphanData, - ActiveTab: r.FormValue("active_tab"), - MissingThumbnails: missingThumbnails, - }) - renderTemplate(w, "admin.html", pageData) + return fileMap, nil }