 
 (defn- batch-request-items
   "{<table> <request> ...} -> {<table> KeysAndAttributes> ...}"
-  [requests]
+  [requests serializer]
   (utils/name-map
    (fn [{:keys [prim-kvs attrs consistent?]}]
      (doto-cond [g (KeysAndAttributes.)]
        attrs       (.setAttributesToGet (mapv name g))
        consistent? (.setConsistentRead  g)
-       :always     (.setKeys (attr-multi-vs prim-kvs))))
+       :always     (.setKeys (attr-multi-vs prim-kvs serializer))))
    requests))
 
 (comment (batch-request-items {:my-table {:prim-kvs [{:my-hash  ["a" "b"]

   (.updateItem (db-client client-opts)
     (doto-cond [g (UpdateItemRequest.)]
       :always  (.setTableName        (name table))
       :always  (.setKey              (clj-item->db-item prim-kvs))
       :always  (.setAttributeUpdates (attribute-updates update-map))
       expected (.setExpected         (expected-values g))
       return   (.setReturnValues     (utils/enum g))
       return-cc? (.setReturnConsumedCapacity (utils/enum :total))))))

(defn delete-item
  "Deletes an item from a table by its primary key.

                (when (> (count (filter next vs)) 1)
                  (-> (Exception. "Can range over only a single attr's values")
                      (throw)))
                (into r (mapv (comp (clj-item->db-item serializer) (partial zipmap attrs))
                              (apply utils/cartesian-product vs)))))
            [] (ensure-coll attr-multi-vs-map))))

