From 81146fd572cc6aef2b1f08baed83729e269cc8d9 Mon Sep 17 00:00:00 2001 From: primal Date: Sun, 1 Feb 2026 19:19:21 -0500 Subject: [PATCH] Fix domain search when pattern looks like domain When searching for "npr.org" and viewing the .org TLD, use the host part ("npr") for matching instead of the full pattern ("npr.org"). Co-Authored-By: Claude Opus 4.5 --- api_domains.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/api_domains.go b/api_domains.go index a350428..1a9152a 100644 --- a/api_domains.go +++ b/api_domains.go @@ -550,6 +550,15 @@ func (c *Crawler) handleAPIDomains(w http.ResponseWriter, r *http.Request) { ORDER BY host ASC LIMIT $4 OFFSET $5 `, tldFilter, status, strings.ToLower(searchQuery.Pattern), limit, offset) + } else if searchQuery.DomainHost != "" && strings.ToLower(searchQuery.DomainTLD) == strings.ToLower(tldFilter) { + // Domain-like search with matching TLD - search for exact host + rows, err = c.db.Query(` + SELECT host, tld, status, last_error, feeds_found + FROM domains + WHERE tld = $1 AND status = $2 AND LOWER(host) = $3 + ORDER BY host ASC + LIMIT $4 OFFSET $5 + `, tldFilter, status, strings.ToLower(searchQuery.DomainHost), limit, offset) } else { searchPattern := "%" + strings.ToLower(searchQuery.Pattern) + "%" rows, err = c.db.Query(` @@ -562,6 +571,7 @@ func (c *Crawler) handleAPIDomains(w http.ResponseWriter, r *http.Request) { } } else if tldFilter != "" && search != "" { // Filter by TLD and search + // If search looks like a domain with matching TLD, use DomainHost for exact/pattern match if searchQuery.ExactMatch { rows, err = c.db.Query(` SELECT host, tld, status, last_error, feeds_found @@ -570,6 +580,15 @@ func (c *Crawler) handleAPIDomains(w http.ResponseWriter, r *http.Request) { ORDER BY host ASC LIMIT $3 OFFSET $4 `, tldFilter, strings.ToLower(searchQuery.Pattern), limit, offset) + } else if searchQuery.DomainHost != "" && strings.ToLower(searchQuery.DomainTLD) == strings.ToLower(tldFilter) { + // Domain-like search with matching TLD - search for exact host or pattern + rows, err = c.db.Query(` + SELECT host, tld, status, last_error, feeds_found + FROM domains + WHERE tld = $1 AND LOWER(host) = $2 + ORDER BY host ASC + LIMIT $3 OFFSET $4 + `, tldFilter, strings.ToLower(searchQuery.DomainHost), limit, offset) } else { searchPattern := "%" + strings.ToLower(searchQuery.Pattern) + "%" rows, err = c.db.Query(`