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
доступ к ним, так что заглянуть внутрь довольно тривиально.