Прежде всего, глубокий параметр get использует .
между ключами, а не :
, так что это является частью вашей проблемы.
Однако сейчас HugSQL поддерживает только один уровень квалифицированных ключевых слов -потому что между .
для разделения ключей получения глубокого параметра и .
, который может быть частью (квалифицированных) ключевых слов, существует внутренняя неоднозначность.
У вас может быть where name = :value:model.person/primary.name
, а затем хэш-карта, подобная {:model.person/primary {:name "John Smith"}}
Или вы можете иметь where name = :value:model.person/name
и передать {:model.person/name "John Smith"}
HugSQL потребуется другой синтаксис для поддержки вложенных квалифицированных ключей (для разрешения неоднозначности .
). Я упомянул подход Selmer к Кертису Саммерсу, сопровождающему HugSQL: использовать ..
для обозначения точки, являющейся частью ключевого слова, чтобы вы могли получить:
where name = :value:model..person/primary.model..person/name
(именно так Selmerуказывает на вложенные квалифицированные ключи), но необходимо учитывать проблемы обратной совместимости, а также, является ли это хорошим синтаксисом в первую очередь (я большой пользователь Selmer и мне это не нравится, но я понимаю, почему они это сделали).