Scala Phantom Cassandra Условная вставка?

Я использую библиотеку Phantom для вставки строк из моего кода Scala в Cassandra.

Таким образом, в основном я создаю класс, который расширяет CassandraTable, а затем я получаю все методы создания и обновления из фантомной библиотеки.

Одна вещь, которую я хочу знать, - как она генерирует свои операторы INSERT. Создает ли он ванильный оператор INSERT оператора условного обновления, такого как INSERT, ЕСЛИ НЕ СУЩЕСТВУЕТ.

1 ответ

Решение

Просто зарегистрируйте запрос, и ответ будет очевиден. По умолчанию insert запрос НЕ содержит ifNotExists, Начиная с Phantom 2.5.0, таблицы автоматически генерируют store метод, чтобы вы могли вызвать:

database.table.store(record).ifNotExists.future()

До фантома 2.5.0:

def store(record: Record): InsertQuery.Default[Table, Record] = {
  insert.value(_.column1, record.value1)
    .value(_.column2, record.value2)
    ...
    .ifNotExists()
}

На заметку, все запросы в фантоме имеют .qb.queryString доступ к ним, так что заглянуть внутрь довольно тривиально.

Другие вопросы по тегам