 (defprotocol ITable
   (table [_] "Table constructor"))
 
+(defprotocol IName
+  (name [_] "Name constructor"))
+
 (defprotocol ICondition
   (condition [_] "Condition constructor"))
 


(extend-protocol IField
  java.lang.String
  (field [s] (DSL/field s))

  clojure.lang.Keyword
  (field [kw] (field (name kw))))

(extend-protocol ITable
  java.lang.String
  (table [s] (DSL/table s))

  clojure.lang.Keyword
  (table [kw] (table (name kw)))

  org.jooq.Table
  (table [t] t))

(extend-protocol ICondition
  java.lang.String

(ns cljooq.dsl
  "Sql building dsl"
  (:refer-clojure :exclude [val group-by and or not name])
  (:require [cljooq.core :as core]
            [cljooq.proto :as proto])
  (:import org.jooq.impl.DSL
           org.jooq.impl.DefaultConfiguration))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SQL Renderer Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Protocols for constructors
