(
mu/defn
normalize-preprocessing-middleware
:-
NormalizedQuery
"Preprocessing middleware. Normalize a query, meaning do things like convert keys and MBQL clause tags to kebab-case
keywords. Convert query to pMBQL if needed."
[
query
:-
[
:map
[
:database
::lib.schema.id/database
]
]
]
(
try
(
u/prog1
(
normalize*
query
)
(
log/tracef
"Normalized query:\n%s\n=>\n%s"
(
u/pprint-to-str
query
)
(
u/pprint-to-str
<>
)
)
)
(
catch
Throwable
e
(
throw
(
ex-info
(
format
"Error normalizing query: %s"
(
ex-message
e
)
)
{
:type
qp.error-type/qp
:query
query
}
e
)
)
)
)
)