diff options
| author | Scott Ostler <scottbot9000@gmail.com> | 2010-08-30 01:36:25 -0400 |
|---|---|---|
| committer | Scott Ostler <scottbot9000@gmail.com> | 2010-08-30 01:36:25 -0400 |
| commit | 4a4c30b5ce1fe05bbf0fd71c654d20211637715e (patch) | |
| tree | 5b03c070ab186e4f37a0776359260b4625b11411 /src/utils.clj | |
| parent | ccc79a88e242bda590e0195b3631dc3992619c48 (diff) | |
Changed fetch-image-dumps to use ljoins
Diffstat (limited to 'src/utils.clj')
| -rwxr-xr-x | src/utils.clj | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/utils.clj b/src/utils.clj index 6d0a4ed..b315bb3 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -196,18 +196,20 @@ (java.sql.Date. (.getTime dt))) (defn join-clauses [clauses] - (let [clause-func (fn [c] - (cond (string? c) [c []] - (vector? c) [(first c) (rest c)] - :else (except! "Invalid query-clause: " c))) - pairs (for [c clauses :when c] - (clause-func c)) - [clauses vars] (transpose pairs)] - [clauses - (apply concat vars)])) + (if clauses + (let [clause-func (fn [c] + (cond (string? c) [c []] + (vector? c) [(first c) (rest c)] + :else (except! "Invalid query-clause: " c))) + pairs (for [c clauses :when c] + (clause-func c)) + [clauses vars] (transpose pairs)] + [clauses + (apply concat vars)]) + [[] []])) -(defnk build-query [:select nil :from nil :where nil - :ljoin nil +(defnk build-query [:select nil :from nil + :where nil :ljoin nil :order nil :limit nil :indent " "] (cond (not select) (except! "Invalid query missing SELECT") @@ -215,6 +217,7 @@ (not where) (except! "Invalid query missing WHERE") :else (let [[sel-cls sel-var] (join-clauses select) [from-cls from-var] (join-clauses from) + [ljoin-cls ljoin-var] (join-clauses ljoin) [where-cls where-var] (join-clauses where)] (vec (concat @@ -223,12 +226,12 @@ "\nFROM\n" indent (str-join (str ",\n" indent) from-cls) (if ljoin - (str "\nLEFT JOIN " ljoin) "") + (str-join "" (map #(str "\nLEFT JOIN " %) ljoin-cls))) "\nWHERE\n" indent (str-join (str " AND\n" indent) where-cls) (if order (str "\nORDER BY " order) "") (if limit (str "\nLIMIT " limit) ""))] - sel-var from-var where-var))))) + sel-var from-var ljoin-var where-var))))) (defn do-cmds [query] (with-connection *db* |
