Hi, Sean!
HoneySQL is a great, compact and minimal. It's a great *physical* pleasure for me to read and tinker it :)
Also I didn't play with your next.jdbc but it's definitely in my plans.
My task is following:
I need to batch several insert honey sql commands which have same metadata shape (table and columns) into single jdbc/execute! call.
Ex:
1. {:insert-into [:my-table]
:values [{:col1 "str1"
:col2 "str2"}]}
2. {:insert-into [:my-table]
:values [{:col1 "str1"
:col2 nil}]} <--------- here we have nil value
honey sql gives me:
1. "insert into "my-table" ("col1","col2") VALUES (?, ?)" ["str1" "str2"]
2. "insert into "my-table" ("col1","col2") VALUES (?, NULL)" ["str1"] <----- NULL is inlined
jdbc/execute! awaits sql and vector of sql-params, so i want to submit one sql-statement and vector of sql-params:
"insert into "my-table" ("col1","col2") VALUES (?, ?)" and [["str1" "str2"] ["str1"]] but to do this i should have same params "layout".
As a result i need to override default honeysql behavior that inlines 'NULL' (and booleans) to hoist them into sql parameters.
Result:
1. "insert into "my-table" ("col1","col2") VALUES (?, ?)" ["str1" "str2"]
2. "insert into "my-table" ("col1","col2") VALUES (?, ?)" ["str1" nil]
Maybe you can advice more accurate way to do.