   (cc/execute session
               (apply new-query-api/delete (cons table query-params))))
 
-(defn delete-async
-  "Same as delete but returns a future"
-  [^Session session table & query-params]
-  (cc/async
-   (apply delete session table query-params)))
-
 (defn select
   "Retrieves one or more columns for one or more rows in a table.
    It returns a result set, where every row is a collection of columns returned by the query."
   [^Session session & query-params]
   (cc/execute session
               (apply new-query-api/select query-params)))
-
-(defn select-async
-  "Same as select but returns a future"
-  [^Session session & query-params]
-  (cc/async
-   (apply select session query-params)))
 
 (defn truncate
   "Truncates a table: permanently and irreversably removes all rows from the table,

  [^Session session & query-params]
  (cc/execute session
              (apply new-query-api/update query-params)))

(defn update-async
  "Same as update but returns a future"
  [^Session session & query-params]
  (cc/async
   (apply update session query-params)))

(defn delete
  "Deletes columns and rows. If the `columns` clause is provided,

;; Higher-level helper functions for schema
;;

(defn describe-keyspace
  "Describes a keyspace"
  [^Session session ks]
  (first (select session
                 (dsl/from :system :schema_keyspaces)
                 (dsl/where {:keyspace_name (name ks)}))))

(defn describe-table
  "Describes a table"
  [^Session session ks table]
  (first (select session
                 (dsl/from :system :schema_columnfamilies)
                 (dsl/where {:columnfamily_name (name table)
                             :keyspace_name     (name ks)}))))

(defn describe-columns
  "Describes a table"
  [^Session session ks table]
  (select session
          (dsl/from :system :schema_columns)
          (dsl/where {:columnfamily_name (name table)
                      :keyspace_name     (name ks)})))
;;
;; Higher-level collection manipulation
;;
