eventstore-0.13.1.4: Database/EventStore/Internal/Operation/Transaction/Message.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DataKinds #-}
--------------------------------------------------------------------------------
-- |
-- Module : Database.EventStore.Internal.Operation.Transaction.Message
-- Copyright : (C) 2015 Yorick Laupa
-- License : (see the file LICENSE)
--
-- Maintainer : Yorick Laupa <yo.eight@gmail.com>
-- Stability : provisional
-- Portability : non-portable
--
--------------------------------------------------------------------------------
module Database.EventStore.Internal.Operation.Transaction.Message where
--------------------------------------------------------------------------------
import Data.Int
--------------------------------------------------------------------------------
import ClassyPrelude
import Data.ProtocolBuffers
--------------------------------------------------------------------------------
import Database.EventStore.Internal.Operation
import Database.EventStore.Internal.Types
--------------------------------------------------------------------------------
-- | Start transaction request.
data Start =
Start
{ _streamId :: Required 1 (Value Text)
, _expectedVersion :: Required 2 (Value Int32)
, _requireMaster :: Required 3 (Value Bool)
}
deriving (Generic, Show)
--------------------------------------------------------------------------------
instance Encode Start
--------------------------------------------------------------------------------
-- | 'Start' smart constructor.
newStart :: Text -> Int32 -> Bool -> Start
newStart stream_id exp_ver req_master =
Start
{ _streamId = putField stream_id
, _expectedVersion = putField exp_ver
, _requireMaster = putField req_master
}
--------------------------------------------------------------------------------
-- | Start transaction response.
data Started =
Started
{ _transId :: Required 1 (Value Int64)
, _result :: Required 2 (Enumeration OpResult)
, _message :: Optional 3 (Value Text)
}
deriving (Generic, Show)
--------------------------------------------------------------------------------
instance Decode Started
--------------------------------------------------------------------------------
-- | Write transactional events request.
data Write =
Write
{ _wTransId :: Required 1 (Value Int64)
, _events :: Repeated 2 (Message NewEvent)
, _wRequireMaster :: Required 3 (Value Bool)
}
deriving (Generic, Show)
--------------------------------------------------------------------------------
instance Encode Write
--------------------------------------------------------------------------------
-- | 'Write' smart constructor.
newWrite :: Int64 -> [NewEvent] -> Bool -> Write
newWrite trans_id evts req_master =
Write
{ _wTransId = putField trans_id
, _events = putField evts
, _wRequireMaster = putField req_master
}
--------------------------------------------------------------------------------
-- | Write transactional events response.
data Written =
Written
{ _wwTransId :: Required 1 (Value Int64)
, _wwResult :: Required 2 (Enumeration OpResult)
, _wwMessage :: Optional 3 (Value Text)
}
deriving (Generic, Show)
--------------------------------------------------------------------------------
instance Decode Written
--------------------------------------------------------------------------------
-- | Commit transaction request.
data Commit =
Commit
{ _cTransId :: Required 1 (Value Int64)
, _cRequireMaster :: Required 2 (Value Bool)
}
deriving (Generic, Show)
--------------------------------------------------------------------------------
instance Encode Commit
--------------------------------------------------------------------------------
-- | 'Commit' smart constructor.
newCommit :: Int64 -> Bool -> Commit
newCommit trans_id req_master =
Commit
{ _cTransId = putField trans_id
, _cRequireMaster = putField req_master
}
--------------------------------------------------------------------------------
-- | Commit transaction response.
data Committed =
Committed
{ _ccTransId :: Required 1 (Value Int64)
, _ccResult :: Required 2 (Enumeration OpResult)
, _ccMessage :: Optional 3 (Value Text)
, _firstNumber :: Required 4 (Value Int32)
, _lastNumber :: Required 5 (Value Int32)
, _preparePosition :: Optional 6 (Value Int64)
, _commitPosition :: Optional 7 (Value Int64)
}
deriving (Generic, Show)
--------------------------------------------------------------------------------
instance Decode Committed