 
 (defn delete!
   "Delete of object(s). For each matching object, the `pre-delete` multimethod is called, which should do
-   any cleanup needed before deleting the object, (such as deleting objects related to the object about to
-   be deleted), or otherwise enforce preconditions before deleting (such as refusing to delete the object if
-   something else depends on it).
+  any cleanup needed before deleting the object, (such as deleting objects related to the object about to
+  be deleted), or otherwise enforce preconditions before deleting (such as refusing to delete the object if
+  something else depends on it).
 
      (delete! Database :id 1)
 
-   NOTE: This function assumes objects have an `:id` column. There's an [open
-   issue](https://github.com/metabase/toucan/issues/3) to support objects that don't have one; until that is resolved,
-   you'll have to use `simple-delete!` instead when deleting objects with no `:id`."
+  NOTE: This function assumes objects have an `:id` column. There's an [open
+  issue](https://github.com/metabase/toucan/issues/3) to support objects that don't have one; until that is resolved,
+  you'll have to use `simple-delete!` instead when deleting objects with no `:id`."
   {:style/indent 1}
   [model & conditions]
   (let [model (resolve-model model)]


(defn- where+
  "Generate a HoneySQL form, converting pairs of arguments with keywords into a `where` clause, and merging other
   HoneySQL clauses in as-is. Meant for internal use by functions like `select`. (So called because it handles
   `where` *plus* other clauses).

     (where+ {} [:id 1 {:limit 10}]) -> {:where [:= :id 1], :limit 10}"
  [honeysql-form options]


(defn simple-insert!
  "Do a simple JDBC `insert` of a single object.
  This is similar to `insert!` but returns the ID of the newly created object rather than the object itself,
  and does not call `pre-insert` or `post-insert`.

     (db/simple-insert! 'Label :name \"Toucan Friendly\") -> 1

  Like `insert!`, `simple-insert!` can be called with either a single `row-map` or kv-style arguments."
  {:style/indent 1}
  ([model row-map]
   {:pre [(map? row-map) (every? keyword? (keys row-map))]}
