{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
module Database.EventStore.Internal.Command where
import Database.EventStore.Internal.Prelude
import Database.EventStore.Internal.Utils
data Command =
Command { Command -> Word8
cmdWord8 :: !Word8
, Command -> Text
cmdDesc :: !Text
}
instance Show Command where
show :: Command -> String
show Command
c = String
"(" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Word8 -> String
prettyWord8 (Command -> Word8
cmdWord8 Command
c) String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
")" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Text -> [Element Text]
forall mono. MonoFoldable mono => mono -> [Element mono]
unpack (Command -> Text
cmdDesc Command
c)
instance Eq Command where
Command
c1 == :: Command -> Command -> Bool
== Command
c2 = Command -> Word8
cmdWord8 Command
c1 Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Command -> Word8
cmdWord8 Command
c2
instance Ord Command where
compare :: Command -> Command -> Ordering
compare Command
c1 Command
c2 = Word8 -> Word8 -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Command -> Word8
cmdWord8 Command
c1) (Command -> Word8
cmdWord8 Command
c2)
heartbeatRequestCmd :: Command
heartbeatRequestCmd :: Command
heartbeatRequestCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x01
, cmdDesc :: Text
cmdDesc = Text
"[heartbeat-request]"
}
heartbeatResponseCmd :: Command
heartbeatResponseCmd :: Command
heartbeatResponseCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x02
, cmdDesc :: Text
cmdDesc = Text
"[heartbeat-response]"
}
writeEventsCmd :: Command
writeEventsCmd :: Command
writeEventsCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x82
, cmdDesc :: Text
cmdDesc = Text
"[write-events]"
}
writeEventsCompletedCmd :: Command
writeEventsCompletedCmd :: Command
writeEventsCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x83
, cmdDesc :: Text
cmdDesc = Text
"[write-events-completed]"
}
transactionStartCmd :: Command
transactionStartCmd :: Command
transactionStartCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x84
, cmdDesc :: Text
cmdDesc = Text
"[transaction-start]"
}
transactionStartCompletedCmd :: Command
transactionStartCompletedCmd :: Command
transactionStartCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x85
, cmdDesc :: Text
cmdDesc = Text
"[transaction-start-completed]"
}
transactionWriteCmd :: Command
transactionWriteCmd :: Command
transactionWriteCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x86
, cmdDesc :: Text
cmdDesc = Text
"[transaction-write]"
}
transactionWriteCompletedCmd :: Command
transactionWriteCompletedCmd :: Command
transactionWriteCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x87
, cmdDesc :: Text
cmdDesc = Text
"[transaction-write-completed]"
}
transactionCommitCmd :: Command
transactionCommitCmd :: Command
transactionCommitCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x88
, cmdDesc :: Text
cmdDesc = Text
"[transaction-commit]"
}
transactionCommitCompletedCmd :: Command
transactionCommitCompletedCmd :: Command
transactionCommitCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x89
, cmdDesc :: Text
cmdDesc = Text
"[transaction-commit-completed]"
}
deleteStreamCmd :: Command
deleteStreamCmd :: Command
deleteStreamCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x8A
, cmdDesc :: Text
cmdDesc = Text
"[delete-stream]"
}
deleteStreamCompletedCmd :: Command
deleteStreamCompletedCmd :: Command
deleteStreamCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0x8B
, cmdDesc :: Text
cmdDesc = Text
"[delete-stream-completed]"
}
readEventCmd :: Command
readEventCmd :: Command
readEventCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB0
, cmdDesc :: Text
cmdDesc = Text
"[read-event]"
}
readEventCompletedCmd :: Command
readEventCompletedCmd :: Command
readEventCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB1
, cmdDesc :: Text
cmdDesc = Text
"[read-event-completed]"
}
readStreamEventsForwardCmd :: Command
readStreamEventsForwardCmd :: Command
readStreamEventsForwardCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB2
, cmdDesc :: Text
cmdDesc = Text
"[read-stream-events-forward]"
}
readStreamEventsForwardCompletedCmd :: Command
readStreamEventsForwardCompletedCmd :: Command
readStreamEventsForwardCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB3
, cmdDesc :: Text
cmdDesc = Text
"[read-stream-events-forward-completed]"
}
readStreamEventsBackwardCmd :: Command
readStreamEventsBackwardCmd :: Command
readStreamEventsBackwardCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB4
, cmdDesc :: Text
cmdDesc = Text
"[read-stream-events-backward]"
}
readStreamEventsBackwardCompletedCmd :: Command
readStreamEventsBackwardCompletedCmd :: Command
readStreamEventsBackwardCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB5
, cmdDesc :: Text
cmdDesc = Text
"[read-stream-events-backward]"
}
readAllEventsForwardCmd :: Command
readAllEventsForwardCmd :: Command
readAllEventsForwardCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB6
, cmdDesc :: Text
cmdDesc = Text
"[read-all-events-forward]"
}
readAllEventsForwardCompletedCmd :: Command
readAllEventsForwardCompletedCmd :: Command
readAllEventsForwardCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB7
, cmdDesc :: Text
cmdDesc = Text
"[read-all-events-forward-completed]"
}
readAllEventsBackwardCmd :: Command
readAllEventsBackwardCmd :: Command
readAllEventsBackwardCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB8
, cmdDesc :: Text
cmdDesc = Text
"[read-all-events-backward]"
}
readAllEventsBackwardCompletedCmd :: Command
readAllEventsBackwardCompletedCmd :: Command
readAllEventsBackwardCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xB9
, cmdDesc :: Text
cmdDesc = Text
"[read-all-events-backward-completed]"
}
subscribeToStreamCmd :: Command
subscribeToStreamCmd :: Command
subscribeToStreamCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC0
, cmdDesc :: Text
cmdDesc = Text
"[subscribe-to-stream]"
}
subscriptionConfirmationCmd :: Command
subscriptionConfirmationCmd :: Command
subscriptionConfirmationCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC1
, cmdDesc :: Text
cmdDesc = Text
"[subscription-confirmation]"
}
streamEventAppearedCmd :: Command
streamEventAppearedCmd :: Command
streamEventAppearedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC2
, cmdDesc :: Text
cmdDesc = Text
"[stream-event-appeared]"
}
unsubscribeFromStreamCmd :: Command
unsubscribeFromStreamCmd :: Command
unsubscribeFromStreamCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC3
, cmdDesc :: Text
cmdDesc = Text
"[unsubscribe-from-stream]"
}
subscriptionDroppedCmd :: Command
subscriptionDroppedCmd :: Command
subscriptionDroppedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC4
, cmdDesc :: Text
cmdDesc = Text
"[subscription-dropped]"
}
connectToPersistentSubscriptionCmd :: Command
connectToPersistentSubscriptionCmd :: Command
connectToPersistentSubscriptionCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC5
, cmdDesc :: Text
cmdDesc = Text
"[connect-to-persistent-subscription]"
}
persistentSubscriptionConfirmationCmd :: Command
persistentSubscriptionConfirmationCmd :: Command
persistentSubscriptionConfirmationCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC6
, cmdDesc :: Text
cmdDesc = Text
"[persistent-subscription-confirmation]"
}
persistentSubscriptionStreamEventAppearedCmd :: Command
persistentSubscriptionStreamEventAppearedCmd :: Command
persistentSubscriptionStreamEventAppearedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC7
, cmdDesc :: Text
cmdDesc = Text
"[persistent-subscription-stream-event-appeared]"
}
createPersistentSubscriptionCmd :: Command
createPersistentSubscriptionCmd :: Command
createPersistentSubscriptionCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC8
, cmdDesc :: Text
cmdDesc = Text
"[create-persistent-subscription]"
}
createPersistentSubscriptionCompletedCmd :: Command
createPersistentSubscriptionCompletedCmd :: Command
createPersistentSubscriptionCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xC9
, cmdDesc :: Text
cmdDesc = Text
"[create-persistent-subscription-completed]"
}
deletePersistentSubscriptionCmd :: Command
deletePersistentSubscriptionCmd :: Command
deletePersistentSubscriptionCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xCA
, cmdDesc :: Text
cmdDesc = Text
"[delete-persistent-subscription]"
}
deletePersistentSubscriptionCompletedCmd :: Command
deletePersistentSubscriptionCompletedCmd :: Command
deletePersistentSubscriptionCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xCB
, cmdDesc :: Text
cmdDesc = Text
"[delete-persistent-subscription-completed]"
}
persistentSubscriptionAckEventsCmd :: Command
persistentSubscriptionAckEventsCmd :: Command
persistentSubscriptionAckEventsCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xCC
, cmdDesc :: Text
cmdDesc = Text
"[persistent-subscription-ack-events]"
}
persistentSubscriptionNakEventsCmd :: Command
persistentSubscriptionNakEventsCmd :: Command
persistentSubscriptionNakEventsCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xCD
, cmdDesc :: Text
cmdDesc = Text
"[persistent-subscription-nak-events]"
}
updatePersistentSubscriptionCmd :: Command
updatePersistentSubscriptionCmd :: Command
updatePersistentSubscriptionCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xCE
, cmdDesc :: Text
cmdDesc = Text
"[update-persistent-subscription]"
}
updatePersistentSubscriptionCompletedCmd :: Command
updatePersistentSubscriptionCompletedCmd :: Command
updatePersistentSubscriptionCompletedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xCF
, cmdDesc :: Text
cmdDesc = Text
"[update-persistent-subscription-completed]"
}
badRequestCmd :: Command
badRequestCmd :: Command
badRequestCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xF0
, cmdDesc :: Text
cmdDesc = Text
"[bad-request]"
}
notHandledCmd :: Command
notHandledCmd :: Command
notHandledCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xF1
, cmdDesc :: Text
cmdDesc = Text
"[not-handled]"
}
authenticateCmd :: Command
authenticateCmd :: Command
authenticateCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xF2
, cmdDesc :: Text
cmdDesc = Text
"[authenticate]"
}
authenticatedCmd :: Command
authenticatedCmd :: Command
authenticatedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xF3
, cmdDesc :: Text
cmdDesc = Text
"[authenticated]"
}
notAuthenticatedCmd :: Command
notAuthenticatedCmd :: Command
notAuthenticatedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xF4
, cmdDesc :: Text
cmdDesc = Text
"[not-authenticated]"
}
identifyClientCmd :: Command
identifyClientCmd :: Command
identifyClientCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xF5
, cmdDesc :: Text
cmdDesc = Text
"[identify-client]"
}
clientIdentifiedCmd :: Command
clientIdentifiedCmd :: Command
clientIdentifiedCmd =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
0xF6
, cmdDesc :: Text
cmdDesc = Text
"[client-identified]"
}
unknownCmd :: Word8 -> Command
unknownCmd :: Word8 -> Command
unknownCmd Word8
w =
Command :: Word8 -> Text -> Command
Command { cmdWord8 :: Word8
cmdWord8 = Word8
w
, cmdDesc :: Text
cmdDesc = Text
"[unknown: "Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Element Text] -> Text
forall seq. IsSequence seq => [Element seq] -> seq
pack (Word8 -> String
prettyWord8 Word8
w) Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"]"
}
getCommand :: Word8 -> Command
getCommand :: Word8 -> Command
getCommand Word8
w =
case ContainerKey (HashMap Word8 Command)
-> HashMap Word8 Command
-> Maybe (MapValue (HashMap Word8 Command))
forall map.
IsMap map =>
ContainerKey map -> map -> Maybe (MapValue map)
lookup Word8
ContainerKey (HashMap Word8 Command)
w HashMap Word8 Command
_cmdDict of
Just MapValue (HashMap Word8 Command)
cmd -> MapValue (HashMap Word8 Command)
Command
cmd
Maybe (MapValue (HashMap Word8 Command))
Nothing -> Word8 -> Command
unknownCmd Word8
w
_cmdDict :: HashMap Word8 Command
_cmdDict :: HashMap Word8 Command
_cmdDict = [(ContainerKey (HashMap Word8 Command),
MapValue (HashMap Word8 Command))]
-> HashMap Word8 Command
forall map. IsMap map => [(ContainerKey map, MapValue map)] -> map
mapFromList
[ (ContainerKey (HashMap Word8 Command)
0x01, MapValue (HashMap Word8 Command)
Command
heartbeatRequestCmd)
, (ContainerKey (HashMap Word8 Command)
0x02, MapValue (HashMap Word8 Command)
Command
heartbeatResponseCmd)
, (ContainerKey (HashMap Word8 Command)
0x82, MapValue (HashMap Word8 Command)
Command
writeEventsCmd)
, (ContainerKey (HashMap Word8 Command)
0x83, MapValue (HashMap Word8 Command)
Command
writeEventsCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0x84, MapValue (HashMap Word8 Command)
Command
transactionStartCmd)
, (ContainerKey (HashMap Word8 Command)
0x85, MapValue (HashMap Word8 Command)
Command
transactionStartCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0x86, MapValue (HashMap Word8 Command)
Command
transactionWriteCmd)
, (ContainerKey (HashMap Word8 Command)
0x87, MapValue (HashMap Word8 Command)
Command
transactionWriteCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0x88, MapValue (HashMap Word8 Command)
Command
transactionCommitCmd)
, (ContainerKey (HashMap Word8 Command)
0x89, MapValue (HashMap Word8 Command)
Command
transactionCommitCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0x8A, MapValue (HashMap Word8 Command)
Command
deleteStreamCmd)
, (ContainerKey (HashMap Word8 Command)
0x8B, MapValue (HashMap Word8 Command)
Command
deleteStreamCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xB0, MapValue (HashMap Word8 Command)
Command
readEventCmd)
, (ContainerKey (HashMap Word8 Command)
0xB1, MapValue (HashMap Word8 Command)
Command
readEventCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xB2, MapValue (HashMap Word8 Command)
Command
readStreamEventsForwardCmd)
, (ContainerKey (HashMap Word8 Command)
0xB3, MapValue (HashMap Word8 Command)
Command
readStreamEventsForwardCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xB4, MapValue (HashMap Word8 Command)
Command
readStreamEventsBackwardCmd)
, (ContainerKey (HashMap Word8 Command)
0xB5, MapValue (HashMap Word8 Command)
Command
readStreamEventsBackwardCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xB6, MapValue (HashMap Word8 Command)
Command
readAllEventsForwardCmd)
, (ContainerKey (HashMap Word8 Command)
0xB7, MapValue (HashMap Word8 Command)
Command
readAllEventsForwardCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xB8, MapValue (HashMap Word8 Command)
Command
readAllEventsBackwardCmd)
, (ContainerKey (HashMap Word8 Command)
0xB9, MapValue (HashMap Word8 Command)
Command
readAllEventsBackwardCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xC0, MapValue (HashMap Word8 Command)
Command
subscribeToStreamCmd)
, (ContainerKey (HashMap Word8 Command)
0xC1, MapValue (HashMap Word8 Command)
Command
subscriptionConfirmationCmd)
, (ContainerKey (HashMap Word8 Command)
0xC2, MapValue (HashMap Word8 Command)
Command
streamEventAppearedCmd)
, (ContainerKey (HashMap Word8 Command)
0xC3, MapValue (HashMap Word8 Command)
Command
unsubscribeFromStreamCmd)
, (ContainerKey (HashMap Word8 Command)
0xC4, MapValue (HashMap Word8 Command)
Command
subscriptionDroppedCmd)
, (ContainerKey (HashMap Word8 Command)
0xC5, MapValue (HashMap Word8 Command)
Command
connectToPersistentSubscriptionCmd)
, (ContainerKey (HashMap Word8 Command)
0xC6, MapValue (HashMap Word8 Command)
Command
persistentSubscriptionConfirmationCmd)
, (ContainerKey (HashMap Word8 Command)
0xC7, MapValue (HashMap Word8 Command)
Command
persistentSubscriptionStreamEventAppearedCmd)
, (ContainerKey (HashMap Word8 Command)
0xC8, MapValue (HashMap Word8 Command)
Command
createPersistentSubscriptionCmd)
, (ContainerKey (HashMap Word8 Command)
0xC9, MapValue (HashMap Word8 Command)
Command
createPersistentSubscriptionCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xCA, MapValue (HashMap Word8 Command)
Command
deletePersistentSubscriptionCmd)
, (ContainerKey (HashMap Word8 Command)
0xCB, MapValue (HashMap Word8 Command)
Command
deletePersistentSubscriptionCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xCC, MapValue (HashMap Word8 Command)
Command
persistentSubscriptionAckEventsCmd)
, (ContainerKey (HashMap Word8 Command)
0xCD, MapValue (HashMap Word8 Command)
Command
persistentSubscriptionNakEventsCmd)
, (ContainerKey (HashMap Word8 Command)
0xCE, MapValue (HashMap Word8 Command)
Command
updatePersistentSubscriptionCmd)
, (ContainerKey (HashMap Word8 Command)
0xCF, MapValue (HashMap Word8 Command)
Command
updatePersistentSubscriptionCompletedCmd)
, (ContainerKey (HashMap Word8 Command)
0xF0, MapValue (HashMap Word8 Command)
Command
badRequestCmd)
, (ContainerKey (HashMap Word8 Command)
0xF1, MapValue (HashMap Word8 Command)
Command
notHandledCmd)
, (ContainerKey (HashMap Word8 Command)
0xF2, MapValue (HashMap Word8 Command)
Command
authenticateCmd)
, (ContainerKey (HashMap Word8 Command)
0xF3, MapValue (HashMap Word8 Command)
Command
authenticatedCmd)
, (ContainerKey (HashMap Word8 Command)
0xF4, MapValue (HashMap Word8 Command)
Command
notAuthenticatedCmd)
, (ContainerKey (HashMap Word8 Command)
0xF5, MapValue (HashMap Word8 Command)
Command
identifyClientCmd)
, (ContainerKey (HashMap Word8 Command)
0xF6, MapValue (HashMap Word8 Command)
Command
clientIdentifiedCmd)
]