how might i convert this sql query to datalog (using datalevin)? my execute! function wraps the next.jdbc execute, using {:return-keys true :builder-fn rs/as-kebab-keys} so each row is a map.
(defn get-rows []
(-> (h/select :games/year :games/city :sports/name :events/name :events/url
:results/date :results/athlete :results/country :results/medal)
(h/from :results)
(h/join :games [:= :games/id :results/game-id])
(h/join :sports [:= :sports/id :results/sport-id])
(h/join :events [:= :events/id :results/event-id])
(execute!)))
i have ended up with this, which isn't ideal but works for me!
(defn get-rows []
(into []
(comp (mapcat identity)
(map #(-> %
(merge (:result/game %) (:result/sport %) (:result/event %))
(dissoc :result/game :result/sport :result/event))))
(d/q '[:find (pull ?e [:result/winner :result/country :result/medal
:result/year :result/month :result/day
{:result/game [:game/year :game/city]
:result/sport [:sport/name]
:result/event [:event/name :event/url]}])
:where [?e :result/medal _]]
(d/db conn))))
my schema matches, except i've made it "datalog"-y: :result/game, :result/sport, :result/event, etc