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:
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)