Skip to content

Instantly share code, notes, and snippets.

View camsaul's full-sized avatar
💭
I am Cam

Cam Saul camsaul

💭
I am Cam
View GitHub Profile
@camsaul
camsaul / gist:14b50563027c377c4aa510c3442845da
Created February 10, 2023 00:09
Clojure action .github/actions/clojure/action.yml
name: Set up Java & Clojure
inputs:
cache-key:
required: true
runs:
using: composite
steps:
- uses: actions/setup-java@v3
@camsaul
camsaul / dox.md
Created February 8, 2023 18:43
Hydrate dox example

toucan2.tools.hydrate/simple-hydrate [model₁ k₂ instance] Implementations should return a version of map instance with the key k added.

simple-hydrate is defined in toucan2.tools.hydrate (toucan2/tools/hydrate.clj:483).

It caches methods using a methodical.impl.cache.watching.WatchingCache.

It uses the method combination methodical.impl.combo.threaded.ThreadingMethodCombination with the threading strategy :thread-last.

@camsaul
camsaul / test-data.sql
Last active January 20, 2023 21:52
Postgres test data (SQL
DROP TABLE IF EXISTS checkins;
DROP TABLE IF EXISTS venues;
DROP TABLE IF EXISTS categories;
DROP TABLE IF EXISTS users;
CREATE TABLE users (
id serial PRIMARY KEY NOT NULL,
@camsaul
camsaul / db.clj
Created December 7, 2022 17:40
Dynamic app DB
(ns waterfront.db
(:require
[waterfront.config :as config]
[waterfront.db.migrations :as db.migrations]
[toucan.db :as t.db])
(:import
(com.mchange.v2.c3p0 DataSources)))
(set! *warn-on-reflection* true)
@camsaul
camsaul / x.clj
Created November 29, 2022 20:27
Sample Dataset Profiling (ZIP/JAR vs file)
(ns metabase.x
(:require
[metabase.sync :as sync]
[toucan.db :as db]))
(defmulti ^:private info
{:arglists '([location])}
keyword)
(defmethod info :jar
@camsaul
camsaul / pom.xml
Created November 8, 2022 20:20
Athena driver pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Athena</groupId>
<artifactId>AthenaJDBC${env.JDBC_V}</artifactId>
<version>${env.MAJOR_V}.${env.MINOR_V}.${env.REVISION_V}.${env.BUILD_V}</version>
<packaging>jar</packaging>
<name>AthenaJDBC${env.JDBC_V}</name>
<url>http://maven.apache.org</url>
@camsaul
camsaul / custom_methods.clj
Last active July 15, 2022 01:42
≈ example tests
(deftest custom-unify-methods
(is (≈ {[String java.time.temporal.Temporal]
(fn [_next-method expected actual]
(let [actual-str (u.date/format actual)]
(when-not (= expected actual-str)
(list 'not= expected (symbol "#t") actual-str))))}
"2022-07-14"
#t "2022-07-14"))
(is (≈ {[String String]
@camsaul
camsaul / x.clj
Created June 3, 2022 17:52
Metabase Query Processor Demo Stuff
(ns metabase.x
(:require [clojure.test :refer :all]
dev.debug-qp
[metabase.models.database :refer [Database]]
[metabase.query-processor :as qp]
[metabase.test :as mt]
[metabase.query-processor.context :as qp.context]
[metabase.query-processor.context.default :as context.default]
[clojure.pprint :as pprint]
[metabase.driver.sql.query-processor :as sql.qp]
@camsaul
camsaul / defenterprise.clj
Last active April 20, 2022 20:12
defenterprise macro PoC
(ns metabase.public-settings.premium-features.defenterprise
(:require [clojure.string :as str]
[metabase.plugins.classloader :as classloader]
[metabase.public-settings.premium-features :as premium-features]
[metabase.util :as u]))
;;; Map of (qualified) function name -> {:oss <oss/fallback fn>
;;; :ee <ee fn>}
(defonce ^:private registry
(atom {}))
@camsaul
camsaul / asm.clj
Created March 10, 2022 23:09
ASM
(ns asm
(:import liquibase.database.core.H2Database
liquibase.database.jvm.JdbcConnection
[org.objectweb.asm Opcodes ClassWriter Type]
[org.objectweb.asm.commons Method GeneratorAdapter]))
(defn x ^ClassWriter []
(let [flags 0
classwriter (org.objectweb.asm.ClassWriter. flags)]
;; define the Class