Brian,

Yeah, and I realize I’m going to take darts for this, but coming from Django’s 
ORM / Rails ActiveRecord makes Korma and these other tools feel like stone-age 
tools.  I’d rather do it all in SQL than fight something to get out of my way, 
or reveal it’s magic.

I know I’m probably not thinking about the problem right, but here’s an example 
of something that I still can’t get to work in Korma.  Grrrr….

lein-repl commands
(use [`advent2.models.db] :reload-all)
(get-unlocked-videos-for-campaign 1)



models/db.clj function
(defn format-todays-date []
  (let [date (java.util.Date.)]
    (prn date)
    (str \' (.format (java.text.SimpleDateFormat. "yyyy-MM-dd") date) \' )))


(defn get-unlocked-videos-for-campaign [campaign]
  (let [c_id (:id campaign)]
    (select videos (where {:unlock_date [<= (format-todays-date)] :campaign_id 
c_id}))))



output
user=> (get-unlocked-videos-for-campaign 1)
#inst "2013-11-18T19:06:09.595-00:00"
Failure to execute query with SQL:
SELECT "videos".* FROM "videos" WHERE ("videos"."unlock_date" <= ? AND 
"videos"."campaign_id" IS NULL)  ::  ['2013-11-18']
PSQLException:
 Message: ERROR: operator does not exist: date <= character varying
  Hint: No operator matches the given name and argument type(s). You might need 
to add explicit type casts.
  Position: 63
 SQLState: 42883
 Error Code: 0

PSQLException ERROR: operator does not exist: date <= character varying
  Hint: No operator matches the given name and argument type(s). You might need 
to add explicit type casts.
  Position: 63  org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse 
(QueryExecutorImpl.java:2102)






On Nov 18, 2013, at 10:23 AM, Brian Craft <craft.br...@gmail.com> wrote:

> Re: korma, and sql dsls, I've been moving between korma, honeysql, and raw 
> sql, without being satisfied with any of them. Desirable traits of the db 
> layer in my problem domain are 1) eliminating boilerplate (e.g. setting up 
> default keys, and indexes, and performing standard joins across relations), 
> 2) isolating view layers from data access layers (so the view doesn't need to 
> know if a subselect or a join is required to span some relation, for 
> example), 3) ability to progressively optimize by dropping back to sql when 
> required, 4) ability to safely expose a general purpose query API over the 
> data.
> 
> korma eliminates a very, very small part of the boilerplate. It's almost not 
> worth the effort. Falling back to raw sql smoothly is difficult in korma, and 
> I've had to drop it entirely in places where I need performance. Honeysql 
> eliminates no boilerplate, but representing queries with data structures does 
> make it easy to expose a sql-like query API with db firewalling (by matching 
> on the incoming structure). Korma appears to also represent queries as data 
> structures, but it's not part of the documented API. You have to 
> reverse-engineer it, and I expect it's subject to change.
> 
> 
> On Monday, November 18, 2013 8:19:28 AM UTC-8, Marcus Blankenship wrote:
> Brian, I certainly will.  I’ll type up something later this week as we 
> progress.  The current pain point is Korma, and generally learning clojure.
> 
> 
> 
> 
> On Nov 16, 2013, at 10:25 AM, Brian Craft <craft...@gmail.com> wrote:
> 
>> Marcus -- I hope you will post updates to the list with your experiences. It 
>> would be very interesting.
>> 
>> This thread has drifted a bit from (roughly) "What can you do with clojure 
>> web tooling?" toward "What can you imagine some day doing with the clojure 
>> web tooling of the future?", which are both interesting questions, but have 
>> somewhat different audiences. And the answers inform each other.
>>  
>> 
>> On Friday, November 15, 2013 8:20:32 AM UTC-8, Marcus Blankenship wrote:
>> Me too!  Thanks to everyone who’s contributed, it’s been *very* helpful!
>> 
>> On Nov 14, 2013, at 10:43 AM, Waldemar Schwan <waldema...@googlemail.com> 
>> wrote:
>> 
>>> I just want to say that this is one of the most interesting discussions I 
>>> followed on this mailing list.
>>> 
>>> Thanks to all participants.
>>> 
>>> Am 14.11.2013 um 19:24 schrieb Brian Craft <craft...@gmail.com>:
>>> 
>>>> 
>>>> 
>>>> On Thursday, November 14, 2013 9:42:52 AM UTC-8, Jonathan Irving wrote:
>>>> I agree with much of what you write James - I'm paid to write rails and 
>>>> node.js code, and I'm finding that node is encouraging me to compose 
>>>> small components and basically sidestep a lot of the issues that rails 
>>>> is designed to address. 
>>>> 
>>>> Can you give a concrete example? 
>>>> 
>>>> -- 
>>>> -- 
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clo...@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+u...@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>>> --- 
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "Clojure" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>> email to clojure+u...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>> 
>>> 
>>> -- 
>>> -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+u...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> --- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to clojure+u...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>> 
>> marcus blankenship
>> \\\ Partner, Problem Solver, Linear Thinker
>> \\\ 541.805.2736 \ @justzeros \ skype:marcuscreo
>> 
>> 
>> -- 
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com
>> Note that posts from new members are moderated - please be patient with your 
>> first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
> 
> marcus blankenship
> \\\ Partner, Problem Solver, Linear Thinker
> \\\ 541.805.2736 \ @justzeros \ skype:marcuscreo
> 
> 
> -- 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

marcus blankenship
\\\ Partner, Problem Solver, Linear Thinker
\\\ 541.805.2736 \ @justzeros \ skype:marcuscreo

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to