feat(grfn/bbbg): Add an attendee search form
Change-Id: I6f4d5102c1d3a36cb706a637196a2053739003bb Reviewed-on: https://cl.tvl.fyi/c/depot/+/4502 Reviewed-by: grfn <grfn@gws.fyi> Autosubmit: grfn <grfn@gws.fyi> Tested-by: BuildkiteCI
This commit is contained in:
parent
9af35bd683
commit
1b0ec2a6d6
3 changed files with 30 additions and 16 deletions
|
@ -96,6 +96,11 @@
|
||||||
(defn make-database [config]
|
(defn make-database [config]
|
||||||
(map->Database {:config config}))
|
(map->Database {:config config}))
|
||||||
|
|
||||||
|
(defn database? [x]
|
||||||
|
(or
|
||||||
|
(instance? Database x)
|
||||||
|
(and (map? x) (contains? x :pool))))
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; Migrations
|
;;; Migrations
|
||||||
;;;
|
;;;
|
||||||
|
|
|
@ -9,17 +9,16 @@
|
||||||
[merge-group-by merge-join merge-left-join merge-select merge-where]]))
|
[merge-group-by merge-join merge-left-join merge-select merge-where]]))
|
||||||
|
|
||||||
(defn search
|
(defn search
|
||||||
([query]
|
([q] (search {:select [:attendee.*] :from [:attendee]} q))
|
||||||
(cond->
|
([db-or-query q]
|
||||||
{:select [:attendee.*]
|
(if (db/database? db-or-query)
|
||||||
:from [:attendee]}
|
(db/list db-or-query (search q))
|
||||||
query
|
(cond-> db-or-query
|
||||||
(assoc
|
q [:or
|
||||||
:where [:or
|
[:ilike :meetup_name (str "%" q "%")]
|
||||||
[:ilike :meetup_name (str "%" query "%")]
|
[:ilike :discord_name (str "%" q "%")]])))
|
||||||
[:ilike :discord_name (str "%" query "%")]])))
|
([db query q]
|
||||||
([db query]
|
(db/list db (search query q))))
|
||||||
(db/list db (search query))))
|
|
||||||
|
|
||||||
(defn for-event
|
(defn for-event
|
||||||
([query event-id]
|
([query event-id]
|
||||||
|
@ -44,10 +43,17 @@
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
(def db (:db bbbg.core/system))
|
(def db (:db bbbg.core/system))
|
||||||
|
(db/database? db)
|
||||||
(search db "gri")
|
(search db "gri")
|
||||||
(db/insert! db :attendee {::attendee/meetup-name "Griffin Smith"
|
(db/insert! db :attendee {::attendee/meetup-name "Griffin Smith"
|
||||||
::attendee/discord-name "grfn"
|
::attendee/discord-name "grfn"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
(search db (with-stats) "gri")
|
||||||
|
|
||||||
|
(search (with-stats) "gri")
|
||||||
|
|
||||||
(db/list db (with-stats))
|
(db/list db (with-stats))
|
||||||
|
|
||||||
|
(map? db)
|
||||||
)
|
)
|
||||||
|
|
|
@ -12,11 +12,12 @@
|
||||||
[ring.util.response :refer [content-type redirect response]]
|
[ring.util.response :refer [content-type redirect response]]
|
||||||
[bbbg.views.flash :as flash]))
|
[bbbg.views.flash :as flash]))
|
||||||
|
|
||||||
(defn- attendees-page [{:keys [attendees]}]
|
(defn- attendees-page [{:keys [attendees q]}]
|
||||||
[:div
|
[:div
|
||||||
[:form.search-form {:method :get :action "/attendees"}
|
[:form.search-form {:method :get :action "/attendees"}
|
||||||
[:input {:type "search"
|
[:input {:type "search"
|
||||||
:name "q"}]
|
:name "q"
|
||||||
|
:value q}]
|
||||||
[:input {:type "submit"
|
[:input {:type "submit"
|
||||||
:value "Search Attendees"}]]
|
:value "Search Attendees"}]]
|
||||||
[:table.attendees
|
[:table.attendees
|
||||||
|
@ -40,9 +41,11 @@
|
||||||
(routes
|
(routes
|
||||||
(wrap-auth-required
|
(wrap-auth-required
|
||||||
(routes
|
(routes
|
||||||
(GET "/attendees" []
|
(GET "/attendees" [q]
|
||||||
(let [attendees (db/list db (db.attendee/with-stats))]
|
(let [attendees (db/list db (cond-> (db.attendee/with-stats)
|
||||||
(page-response (attendees-page {:attendees attendees}))))))
|
q (db.attendee/search q)))]
|
||||||
|
(page-response (attendees-page {:attendees attendees
|
||||||
|
:q q}))))))
|
||||||
|
|
||||||
(GET "/attendees.json" [q event_id attended]
|
(GET "/attendees.json" [q event_id attended]
|
||||||
(let [results
|
(let [results
|
||||||
|
|
Loading…
Add table
Reference in a new issue