I have an API Server written on golang in a front of Cassandra, so I use gocql as driver. What I want is to return an error if someone tries to create duplicated entries in Cassandra, so I need not only idempotent operation (which could be achieved via if not exists clause), but also somehow to know if query was applied or not. Preliminary request like SELECT primary_keys FROM TABLE WHERE primary_keys = blah LIMIT 1 is not an option as INSERT operation should be atomic.
When I run an example below in cqlsh Cassandra tells if query is applied:
cqlsh> create table tests.demo (
... uuid text PRIMARY KEY,
... data text
... );
cqlsh> insert into tests.demo (uuid, data) values ('test', 'data') if not exists;
applied
-----------
True
cqlsh> insert into tests.demo (uuid, data) values ('test', 'data') if not exists;
applied | uuid | data
-----------+------+------
False | test | data
Is there any option to achieve the same with gocql since query.Exec() returns only error?
Thank you!