                [:dataset "varchar(100)"]
                [:collection "varchar(255)"]
                [:feature_id "varchar(100)"]
+               [:version "uuid"]
                [:valid_from "timestamp without time zone"]
                [:valid_to "timestamp without time zone"]
                [:feature "text"]

         mustafied (mustafy feature)
         merger (path->merge-fn target keyworded-path)
         merged (merger mustafied)
         merged (update merged :_tiles #(clojure.set/union % (tiles/nl (:geometry feature))) )]
     merged)))



(defn- update-current [db features]
  (try
    (let [transform-fn (juxt pg/to-json :_version :_valid_from :_valid_to :_tiles :_dataset :_collection :_id)
          records (map transform-fn features)]
      (j/execute! db (cons (update-current-sql) records) :multi? true :transaction? false))
    (catch java.sql.SQLException e (j/print-sql-exception-chain e))))

(defn- new-history-sql []
  (str "INSERT INTO " (qualified-history) " (dataset, collection, feature_id, version, valid_from, valid_to, feature, tiles)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)"))

(defn- new-history [db features]
  (try
    (let [transform-fn (juxt :_dataset :_collection :_id :_version :_valid_from :_valid_to pg/to-json :_tiles)
          records (map transform-fn features)]
      (j/execute! db (cons (new-history-sql) records) :multi? true :transaction? false))
    (catch java.sql.SQLException e (j/print-sql-exception-chain e))))
