package com.cyngn.chrono.storage.accessor;
import com.cyngn.chrono.storage.entity.Payload;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.mapping.annotations.Accessor;
import com.datastax.driver.mapping.annotations.Param;
import com.datastax.driver.mapping.annotations.Query;
import com.google.common.util.concurrent.ListenableFuture;
/**
* Get and create payloads.
*
* @author truelove@cyngn.com (Jeremy Truelove) 8/19/15
*/
@Accessor
public interface PayloadAccessor {
@Query("SELECT * FROM chrono.payload WHERE unit=:unit AND size=:size")
ListenableFuture<Payload> getPayloadAsync(@Param("unit") String unit, @Param("size") long size);
@Query("SELECT unit,size FROM chrono.payload")
ListenableFuture<ResultSet> getSupportedPayloads();
@Query("INSERT INTO chrono.payload(unit, size, data) VALUES (:unit, :size, :data) IF NOT EXISTS")
ListenableFuture<ResultSet> createPayload(@Param("unit") String unit, @Param("size") long size,
@Param("data") String data);
}