module Network.Riak.CRDT.Request (
get
, counterUpdate
, setUpdate
, mapUpdate
) where
import Data.ByteString.Lazy (ByteString)
import Network.Riak.CRDT.Ops
import qualified Network.Riak.CRDT.Types as CRDT
import qualified Network.Riak.Protocol.DtFetchRequest as DtFetch
import qualified Network.Riak.Protocol.DtOp as DtOp
import qualified Network.Riak.Protocol.DtUpdateRequest as DtUpdate
import Network.Riak.Types
counterUpdate :: [CRDT.CounterOp]
-> BucketType -> Bucket -> Key
-> DtUpdate.DtUpdateRequest
counterUpdate ops = update (counterUpdateOp ops)
setUpdate :: [CRDT.SetOp]
-> BucketType -> Bucket -> Key
-> DtUpdate.DtUpdateRequest
setUpdate ops = update (setUpdateOp ops)
mapUpdate :: [CRDT.MapOp]
-> BucketType -> Bucket -> Key
-> DtUpdate.DtUpdateRequest
mapUpdate ops = update (mapUpdateOp ops)
update :: DtOp.DtOp -> BucketType -> Bucket -> Key -> DtUpdate.DtUpdateRequest
update op t b k = DtUpdate.DtUpdateRequest {
DtUpdate.bucket = b,
DtUpdate.key = Just k,
DtUpdate.type' = t,
DtUpdate.context = Nothing,
DtUpdate.op = op,
DtUpdate.w = Nothing,
DtUpdate.dw = Nothing,
DtUpdate.pw = Nothing,
DtUpdate.return_body = Nothing,
DtUpdate.timeout = Nothing,
DtUpdate.sloppy_quorum = Nothing,
DtUpdate.n_val = Nothing,
DtUpdate.include_context = Nothing
}
get :: ByteString -> ByteString -> ByteString -> DtFetch.DtFetchRequest
get t b k = DtFetch.DtFetchRequest {
DtFetch.bucket = b,
DtFetch.key = k,
DtFetch.type' = t,
DtFetch.r = Nothing,
DtFetch.pr = Nothing,
DtFetch.basic_quorum = Nothing,
DtFetch.notfound_ok = Nothing,
DtFetch.timeout = Nothing,
DtFetch.sloppy_quorum = Nothing,
DtFetch.n_val = Nothing,
DtFetch.include_context = Nothing
}