tagliatelle

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

commit 9a96b3f519e1a4ed8b0b6cd3aba0f8346ee49d6d
parent a31696318970bf876ca2d915484b488415f927b6
Author: breadcat <breadcat@users.noreply.github.com>
Date:   Tue, 24 Feb 2026 23:42:32 +0000

Merge duplicated pagination code

Diffstat:
Minclude-filters.go | 54++++--------------------------------------------------
Minclude-pagination.go | 15+++++++++++++++
Minclude-search.go | 14++------------
Minclude-viewer.go | 19++-----------------
4 files changed, 23 insertions(+), 79 deletions(-)

diff --git a/include-filters.go b/include-filters.go @@ -4,46 +4,12 @@ import ( "fmt" "net/http" "net/url" - "strconv" "strings" ) -func getTaggedFiles() ([]File, error) { - return queryFilesWithTags(` - SELECT DISTINCT f.id, f.filename, f.path, COALESCE(f.description, '') as description - FROM files f - JOIN file_tags ft ON ft.file_id = f.id - ORDER BY f.id DESC - `) -} - -func getUntaggedFiles() ([]File, error) { - return queryFilesWithTags(` - SELECT f.id, f.filename, f.path, COALESCE(f.description, '') as description - FROM files f - LEFT JOIN file_tags ft ON ft.file_id = f.id - WHERE ft.file_id IS NULL - ORDER BY f.id DESC - `) -} - func untaggedFilesHandler(w http.ResponseWriter, r *http.Request) { - // Get page number from query params - pageStr := r.URL.Query().Get("page") - page := 1 - if pageStr != "" { - if p, err := strconv.Atoi(pageStr); err == nil && p > 0 { - page = p - } - } - - // Get per page from config - perPage := 50 - if config.ItemsPerPage != "" { - if pp, err := strconv.Atoi(config.ItemsPerPage); err == nil && pp > 0 { - perPage = pp - } - } + page := pageFromRequest(r) + perPage := perPageFromConfig(50) files, total, _ := getUntaggedFilesPaginated(page, perPage) pageData := buildPageDataWithPagination("Untagged Files", files, page, total, perPage, r) @@ -51,20 +17,8 @@ func untaggedFilesHandler(w http.ResponseWriter, r *http.Request) { } func tagFilterHandler(w http.ResponseWriter, r *http.Request) { - pageStr := r.URL.Query().Get("page") - page := 1 - if pageStr != "" { - if p, err := strconv.Atoi(pageStr); err == nil && p > 0 { - page = p - } - } - - perPage := 50 - if config.ItemsPerPage != "" { - if pp, err := strconv.Atoi(config.ItemsPerPage); err == nil && pp > 0 { - perPage = pp - } - } + page := pageFromRequest(r) + perPage := perPageFromConfig(50) fullPath := strings.TrimPrefix(r.URL.Path, "/tag/") tagPairs := strings.Split(fullPath, "/and/tag/") diff --git a/include-pagination.go b/include-pagination.go @@ -4,9 +4,24 @@ import ( "database/sql" "net/http" "net/url" + "strconv" "strings" ) +func pageFromRequest(r *http.Request) int { + if p, err := strconv.Atoi(r.URL.Query().Get("page")); err == nil && p > 0 { + return p + } + return 1 +} + +func perPageFromConfig(fallback int) int { + if n, err := strconv.Atoi(config.ItemsPerPage); err == nil && n > 0 { + return n + } + return fallback +} + func getUntaggedFilesPaginated(page, perPage int) ([]File, int, error) { // Get total count var total int diff --git a/include-search.go b/include-search.go @@ -3,23 +3,13 @@ package main import ( "fmt" "net/http" - "strconv" "strings" ) func searchHandler(w http.ResponseWriter, r *http.Request) { query := strings.TrimSpace(r.URL.Query().Get("q")) - - page := 1 - if p, err := strconv.Atoi(r.URL.Query().Get("page")); err == nil && p > 0 { - page = p - } - perPage := 100 - if config.ItemsPerPage != "" { - if n, err := strconv.Atoi(config.ItemsPerPage); err == nil && n > 0 { - perPage = n - } - } + page := pageFromRequest(r) + perPage := perPageFromConfig(50) var files []File var total int diff --git a/include-viewer.go b/include-viewer.go @@ -6,7 +6,6 @@ import ( "net" "net/http" "net/url" - "strconv" "strings" ) @@ -207,22 +206,8 @@ func getOrCreateCategoryAndTag(category, value string) (int, int, error) { } func listFilesHandler(w http.ResponseWriter, r *http.Request) { - // Get page number from query params - pageStr := r.URL.Query().Get("page") - page := 1 - if pageStr != "" { - if p, err := strconv.Atoi(pageStr); err == nil && p > 0 { - page = p - } - } - - // Get per page from config - perPage := 50 - if config.ItemsPerPage != "" { - if pp, err := strconv.Atoi(config.ItemsPerPage); err == nil && pp > 0 { - perPage = pp - } - } + page := pageFromRequest(r) + perPage := perPageFromConfig(50) tagged, taggedTotal, _ := getTaggedFilesPaginated(page, perPage) untagged, untaggedTotal, _ := getUntaggedFilesPaginated(page, perPage)