TL;DR - refactoring of jdbc code discussed by clojure devs, enabled by recent modularity.
https://github.com/primedia/iws-oracle/tree/defsproc
- Reduce duplication of boilerplate JDBC code.
- Expose Oracle Stored Procedure (contract) as data (map).
| (ns test-app.foo | |
| (:require [clojure.java.io :as io]) | |
| (:import [java.util Properties])) | |
| ;;dotenv (w/ precedence per Colin -- shell > .env.foo > .env) | |
| (defn f->p | |
| [f] | |
| (let [file (io/as-file f)] | |
| (when (.exists file) (doto (Properties.) (.load (io/input-stream file)))))) |
| function! RunTests() | |
| " reload the namespace | |
| norm cpr | |
| " setup | |
| call clearmatches() | |
| highlight Red ctermbg=darkred | |
| redir => output | |
| " use Clojure to do the real work, run tests, |
TL;DR - refactoring of jdbc code discussed by clojure devs, enabled by recent modularity.
https://github.com/primedia/iws-oracle/tree/defsproc
| (ns classpath-test.core | |
| (:require [clojure.java.shell :refer [sh]] | |
| [cemerick.pomegranate :as pom])) | |
| (defn make-java | |
| [class-name | |
| package] | |
| (str "package " package ";" | |
| "public class " class-name " {" | |
| "public static String foo() { return \"bar\"; }" |
| (ns iws-oracle.defsproc.generate | |
| (:require [clojure.java.jdbc :as jdbc] | |
| [clojure.string :as str] | |
| [schema.core :as s] | |
| [schema.macros :as sm] | |
| [iws-oracle.defsproc :refer :all] | |
| [iws-oracle.test.core-test :as ct])) | |
| (def args-sql (str "select * from all_arguments where lower " | |
| "(object_name) = lower (?)")) |
| (ns profiling | |
| (:require [magrathea.server.routes :refer (app)] | |
| [ring.mock.request :as mock] | |
| [taoensso.timbre.profiling :as p])) | |
| (def req (mock/request | |
| :get | |
| "/organization/085cafea-868b-4db2-958c-641988553c5b/my-account")) | |
| (defn do-with-orgs |
| (defn request* [method route-path privilege route-params handler] | |
| `(~method ~route-path ~route-params | |
| (fn [req#] (let [user# (get-in req# [:session :current-user])] | |
| (if (access/has-access? user# ~privilege) | |
| (~handler req#) | |
| ~response-401))))) | |
| (defmacro GET* [route-path privilege route-params handler] | |
| (request* `GET route-path privilege route-params handler)) |
| (ns access.core | |
| (:refer-clojure :exclude [==]) | |
| (:require [clojure.core.logic :refer :all])) | |
| (def all-priv [:smart-controls :view-all-reports :admin :foo :bar]) | |
| (def all-roles [{:name :admin :privs priv} | |
| {:name :reporting :privs [:view-all-reports]} | |
| {:name :store :privs [:smart-controls :view-all-reports]} | |
| {:name :foo-role :privs [:foo :bar]}]) |