Skip to content

Instantly share code, notes, and snippets.

@dkarvik
Created August 29, 2015 21:06
Show Gist options
  • Select an option

  • Save dkarvik/5b6ecff709e59e85e822 to your computer and use it in GitHub Desktop.

Select an option

Save dkarvik/5b6ecff709e59e85e822 to your computer and use it in GitHub Desktop.
(ns bans.db.permissions
(:require [bans.db :as db]
[clojure.java.jdbc :as j]
[honeysql.core :as sql]
[honeysql.helpers :refer :all]))
(def base (-> (select :*)
(from :permission)
(join :users [:= :permission.user_id :users.id]
:server [:= :permission.server_id :server.id])))
(defn filter-permissions
[predicate]
(j/query db/cfg (-> base
(merge-where predicate)
sql/format)))
(defn add-permission!
[server_id user_id]
(db/get-id (j/insert! db/cfg :permission {:server_id server_id :user_id user_id})))
(defn remove-permission!
[server_id user_id]
(j/delete! db/cfg :permission ["server_id = ? AND user_id = ?" server_id user_id]))
(defn permission?
[server_id user_id]
(first (j/query db/cfg (sql/format
(-> base
(where [:and [:= :server_id server_id]
[:= :user_id user_id]])
(limit 1))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment