From 763b9e4404f3fd934a6f38ccb0043ceba38f56d2 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Thu, 4 Apr 2024 23:05:16 -0700 Subject: [PATCH] Text search for the change log --- pkg/controller/admin/change_log.go | 5 ++++- pkg/models/change_log.go | 14 +++++++++++++- web/templates/admin/change_log.html | 30 ++++++++++++++++++++--------- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/pkg/controller/admin/change_log.go b/pkg/controller/admin/change_log.go index c430d11..814c4be 100644 --- a/pkg/controller/admin/change_log.go +++ b/pkg/controller/admin/change_log.go @@ -31,6 +31,8 @@ func ChangeLog() http.HandlerFunc { adminUser = r.FormValue("admin_user_id") event = r.FormValue("event") sort = r.FormValue("sort") + searchQuery = r.FormValue("search") + search = models.ParseSearchString(searchQuery) sortOK bool ) @@ -80,7 +82,7 @@ func ChangeLog() http.HandlerFunc { } pager.ParsePage(r) - cl, err := models.PaginateChangeLog(tableName, tableID, aboutUserID, adminUserID, event, pager) + cl, err := models.PaginateChangeLog(tableName, tableID, aboutUserID, adminUserID, event, search, pager) if err != nil { session.FlashError(w, r, "Error paginating the change log: %s", err) } @@ -115,6 +117,7 @@ func ChangeLog() http.HandlerFunc { "AboutUserID": aboutUser, "AdminUserID": adminUser, "Event": event, + "SearchQuery": searchQuery, "Sort": sort, } if err := tmpl.Execute(w, r, vars); err != nil { diff --git a/pkg/models/change_log.go b/pkg/models/change_log.go index d766353..0c21731 100644 --- a/pkg/models/change_log.go +++ b/pkg/models/change_log.go @@ -52,7 +52,7 @@ var ChangeLogEventTypes = []string{ } // PaginateChangeLog lists the change logs. -func PaginateChangeLog(tableName string, tableID, aboutUserID, adminUserID uint64, event string, pager *Pagination) ([]*ChangeLog, error) { +func PaginateChangeLog(tableName string, tableID, aboutUserID, adminUserID uint64, event string, search *Search, pager *Pagination) ([]*ChangeLog, error) { var ( cl = []*ChangeLog{} where = []string{} @@ -84,6 +84,18 @@ func PaginateChangeLog(tableName string, tableID, aboutUserID, adminUserID uint6 placeholders = append(placeholders, event) } + // Text search terms + for _, term := range search.Includes { + var ilike = "%" + strings.ToLower(term) + "%" + where = append(where, "change_logs.message ILIKE ?") + placeholders = append(placeholders, ilike) + } + for _, term := range search.Excludes { + var ilike = "%" + strings.ToLower(term) + "%" + where = append(where, "change_logs.message NOT ILIKE ?") + placeholders = append(placeholders, ilike) + } + query := DB.Model(&ChangeLog{}).Where( strings.Join(where, " AND "), placeholders..., diff --git a/web/templates/admin/change_log.html b/web/templates/admin/change_log.html index 319ea72..82a1a1a 100644 --- a/web/templates/admin/change_log.html +++ b/web/templates/admin/change_log.html @@ -75,7 +75,7 @@ -
+
+
+
@@ -102,6 +104,16 @@
+
+ + +

+ Tip: you can "quote exact phrases" and + -exclude words (or + -"exclude phrases") from your search. +

+
+
@@ -113,15 +125,15 @@
- - -
- Reset - +
+
+ Reset + +