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(`