(ns metabase.driver.sql.query-processor.util
  (:require
   [metabase.util.honey-sql-2 :as h2x]))

Take a nested field column field corresponding to something like an inner key within a JSON column, and then get the parent column's identifier from its own identifier and the nfc path stored in the field.

Suppose you have the child with corresponding identifier

(metabase.util.honey-sql-2/identifier :field "blah -> boop")

Ultimately, this is just a way to get the parent identifier

(metabase.util.honey-sql-2/identifier :field "blah")

(defn nfc-field->parent-identifier
  [field-identifier {:keys [nfc-path], :as _field}]
  {:pre [(h2x/identifier? field-identifier)]}
  (let [parent-components (-> (last field-identifier)
                              (vec)
                              (pop)
                              (conj (first nfc-path)))]
    (apply h2x/identifier (cons :field parent-components))))