как указать несколько таргетов для OnConflict(goqu.DoUpdate("", "")...)
Первый раз о нем слышу, но мб несколько вызовов DoUpdate надо?
Несколько таргетов в основном через индекс.
OnConflict один аргумент принимает :(
Логические операции с ними не помогут ? https://github.com/doug-martin/goqu/blob/31d438d38230118d377f11cfaad9627aa3a23864/expressions.go#L58
Не удовлетворяет интерфейсу в Action() ConflictAction
Должен быть путь, либо иначе этот квери билдер достоен забвения
Собсна там интерфейс... Мб создатель намекает реализовать самому. Или я балбес...
Покопавшись в его исходниках (в том числе местах использования таргет и тестах)& полагаю ответ на этот вопрос следующий - записать всю строку target, как она есть, например "column1, column2" судя по всему, это выражение почти в неизменном виде идет в SQL запрос. Единственное место, где это значение как-то оценивается - https://github.com/doug-martin/goqu/blob/31d438d38230118d377f11cfaad9627aa3a23864/sqlgen/insert_sql_generator.go#L166 тут проверяется на префикс "on constraint". Если такого префикса нет, то target в чистом виде идет в запрос - https://github.com/doug-martin/goqu/blob/31d438d38230118d377f11cfaad9627aa3a23864/sqlgen/insert_sql_generator.go#L174
А ты силен! 😅 Спасибо. Билдер мне нужен был, чтобы отправить 100 VALUES с выражением ON CONFLICT DO UPDATE разом, а не соваться с каждым значением в базу. И я вроде нашел issue, в goqu по этому поводу, но без решения... Потом написал свой "билдер" SQL строки, но из-за большой структуры, он показался прожорливым. Собственно решил вопрос я, просто написав сырой запрос, и в цикле запихивая его в pgx.Batch{}.Query(sql). И вроде даже быстро работает.
не за что, в принципе работа состоит из подобного, только репов не 1, а штук 30.
Обсуждают сегодня