(
defn-
entity-id-models
[
]
(
let
[
entity-id-table-names
(
entity-id-table-names
)
table-name->model
(
make-table-name->model
)
entity-id-table-name->model
(
into
{
}
(
map
(
fn
[
table-name
]
(
if-let
[
model
(
table-name->model
table-name
)
]
[
table-name
model
]
(
throw
(
ex-info
(
trs
"Model not found for table {0}"
table-name
)
{
:table-name
table-name
:error
::model-not-found
}
)
)
)
)
)
entity-id-table-names
)
entity-id-models
(
set
(
vals
entity-id-table-name->model
)
)
]
(
when-not
(
=
(
count
entity-id-table-names
)
(
count
entity-id-models
)
)
(
throw
(
ex-info
(
trs
"{0} tables have entity_id; expected to resolve the same number of models, but only got {1}"
(
count
entity-id-table-names
)
(
count
entity-id-models
)
)
{
:tables
entity-id-table-names
:resolved
entity-id-table-name->model
:error
::mismatched-model-count
}
)
)
)
(
set
entity-id-models
)
)
)