simplex-chat-6.5.0.7
Safe HaskellNone
LanguageHaskell2010

Simplex.Chat.Store.Shared

Synopsis

Documentation

data StoreError Source #

Constructors

SEDuplicateName 
SEUserNotFound 

Fields

SEUserNotFoundByName 
SEUserNotFoundByContactId 

Fields

SEUserNotFoundByGroupId 

Fields

SEUserNotFoundByFileId 
SEUserNotFoundByContactRequestId 

Fields

SEContactNotFound 

Fields

SEContactNotFoundByName 
SEContactNotFoundByMemberId 
SEContactNotReady 
SEDuplicateContactLink 
SEUserContactLinkNotFound 
SEContactRequestNotFound 

Fields

SEContactRequestNotFoundByName 
SEInvalidContactRequestEntity 

Fields

SEInvalidBusinessChatContactRequest 
SEGroupNotFound 

Fields

SEGroupNotFoundByName 

Fields

SEGroupMemberNameNotFound 
SEGroupMemberNotFound 
SEGroupMemberNotFoundByIndex 

Fields

SEMemberRelationsVectorNotFound 
SEGroupHostMemberNotFound 

Fields

SEGroupMemberNotFoundByMemberId 

Fields

SEMemberContactGroupMemberNotFound 

Fields

SEInvalidMemberRelationUpdate 
SEGroupWithoutUser 
SEDuplicateGroupMember 
SEGroupAlreadyJoined 
SEGroupInvitationNotFound 
SENoteFolderAlreadyExists 
SENoteFolderNotFound 
SEUserNoteFolderNotFound 
SESndFileNotFound 
SESndFileInvalid 
SERcvFileNotFound 
SERcvFileDescrNotFound 
SEFileNotFound 
SERcvFileInvalid 
SERcvFileInvalidDescrPart 
SELocalFileNoTransfer 
SESharedMsgIdNotFoundByFileId 
SEFileIdNotFoundBySharedMsgId 
SESndFileNotFoundXFTP 
SERcvFileNotFoundXFTP 
SEConnectionNotFound 
SEConnectionNotFoundById 

Fields

SEConnectionNotFoundByMemberId 
SEPendingConnectionNotFound 

Fields

SEUniqueID 
SELargeMsg 
SEInternalError 

Fields

SEDBException 

Fields

SEDBBusyError 

Fields

SEBadChatItem 

Fields

SEChatItemNotFound 

Fields

SEChatItemNotFoundByText 

Fields

SEChatItemSharedMsgIdNotFound 
SEChatItemNotFoundByFileId 
SEChatItemNotFoundByContactId 

Fields

SEChatItemNotFoundByGroupId 

Fields

SEProfileNotFound 

Fields

SEDuplicateGroupLink 

Fields

SEGroupLinkNotFound 

Fields

SEHostMemberIdNotFound 

Fields

SEContactNotFoundByFileId 
SENoGroupSndStatus 
SEDuplicateGroupMessage 
SERemoteHostNotFound 
SERemoteHostUnknown 
SERemoteHostDuplicateCA 
SERemoteCtrlNotFound 
SERemoteCtrlDuplicateCA 
SEProhibitedDeleteUser 

Fields

SEOperatorNotFound 

Fields

SEUsageConditionsNotFound 
SEInvalidQuote 
SEInvalidMention 
SEInvalidDeliveryTask 

Fields

SEDeliveryTaskNotFound 

Fields

SEInvalidDeliveryJob 

Fields

SEDeliveryJobNotFound 

Fields

SEWorkItemError

Error when reading work item that suspends worker - do not use!

Fields

Instances

Instances details
FromJSON StoreError Source # 
Instance details

Defined in Simplex.Chat.Store.Shared

Methods

parseJSON :: Value -> Parser StoreError

parseJSONList :: Value -> Parser [StoreError]

omittedField :: Maybe StoreError

ToJSON StoreError Source # 
Instance details

Defined in Simplex.Chat.Store.Shared

Methods

toJSON :: StoreError -> Value

toEncoding :: StoreError -> Encoding

toJSONList :: [StoreError] -> Value

toEncodingList :: [StoreError] -> Encoding

omitField :: StoreError -> Bool

Exception StoreError Source # 
Instance details

Defined in Simplex.Chat.Store.Shared

Methods

toException :: StoreError -> SomeException

fromException :: SomeException -> Maybe StoreError

displayException :: StoreError -> String

Show StoreError Source # 
Instance details

Defined in Simplex.Chat.Store.Shared

Methods

showsPrec :: Int -> StoreError -> ShowS

show :: StoreError -> String

showList :: [StoreError] -> ShowS

AnyStoreError StoreError Source # 
Instance details

Defined in Simplex.Chat.Store.Shared

AnyError StoreError Source # 
Instance details

Defined in Simplex.Chat.Store.Shared

Methods

fromSomeException :: SomeException -> StoreError

insertedRowId :: Connection -> IO Int64 Source #

checkConstraint :: StoreError -> ExceptT StoreError IO a -> ExceptT StoreError IO a Source #

constraintError :: SQLError -> Bool Source #

mkStoreError :: SomeException -> StoreError Source #

toFileInfo :: (Int64, Maybe ACIFileStatus, Maybe FilePath) -> CIFileInfo Source #

type EntityIdsRow = (Maybe Int64, Maybe Int64, Maybe Int64) Source #

type ConnectionRow = (Int64, ConnId, Int, Maybe Int64, Maybe Int64, BoolInt, Maybe GroupLinkId, Maybe XContactId) :. ((Maybe Int64, ConnStatus, ConnType, BoolInt, LocalAlias) :. (EntityIdsRow :. (UTCTime, Maybe Text, Maybe UTCTime, PQSupport, PQEncryption, Maybe PQEncryption, Maybe PQEncryption, Int, Int, Maybe VersionChat, VersionChat, VersionChat))) Source #

type MaybeConnectionRow = (Maybe Int64, Maybe ConnId, Maybe Int, Maybe Int64, Maybe Int64, Maybe BoolInt, Maybe GroupLinkId, Maybe XContactId) :. ((Maybe Int64, Maybe ConnStatus, Maybe ConnType, Maybe BoolInt, Maybe LocalAlias) :. (EntityIdsRow :. (Maybe UTCTime, Maybe Text, Maybe UTCTime, Maybe PQSupport, Maybe PQEncryption, Maybe PQEncryption, Maybe PQEncryption, Maybe Int, Maybe Int, Maybe VersionChat, Maybe VersionChat, Maybe VersionChat))) Source #

createConnection_ :: Connection -> UserId -> ConnType -> Maybe Int64 -> ConnId -> ConnStatus -> VersionChat -> VersionRangeChat -> Maybe ContactId -> Maybe Int64 -> Maybe ProfileId -> Int -> UTCTime -> SubscriptionMode -> PQSupport -> IO Connection Source #

createIncognitoProfile_ :: Connection -> UserId -> UTCTime -> Profile -> IO Int64 Source #

updateConnSupportPQ :: Connection -> Int64 -> PQSupport -> PQEncryption -> IO () Source #

updateConnPQSndEnabled :: Connection -> Int64 -> PQEncryption -> IO () Source #

updateConnPQRcvEnabled :: Connection -> Int64 -> PQEncryption -> IO () Source #

updateConnPQEnabledCON :: Connection -> Int64 -> PQEncryption -> IO () Source #

setPeerChatVRange :: Connection -> Int64 -> VersionChat -> VersionRangeChat -> IO () Source #

setCommandConnId :: Connection -> User -> CommandId -> Int64 -> IO () Source #

createContact :: Connection -> User -> Profile -> ExceptT StoreError IO () Source #

createContact_ :: Connection -> User -> Profile -> Preferences -> Maybe (ACreatedConnLink, Maybe SharedMsgId) -> LocalAlias -> UTCTime -> ExceptT StoreError IO ContactId Source #

type NewPreparedContactRow = (Maybe AConnectionRequestUri, Maybe AConnShortLink, Maybe SharedMsgId) Source #

toPreparedContactRow :: Maybe (ACreatedConnLink, Maybe SharedMsgId) -> NewPreparedContactRow Source #

type NewPreparedGroupRow (m :: ConnectionMode) = (Maybe (ConnectionRequestUri m), Maybe (ConnShortLink m), Maybe SharedMsgId) Source #

toPreparedGroupRow :: forall (m :: ConnectionMode). Maybe (CreatedConnLink m, Maybe SharedMsgId) -> NewPreparedGroupRow m Source #

type PreparedContactRow = (Maybe AConnectionRequestUri, Maybe AConnShortLink, Maybe SharedMsgId, Maybe SharedMsgId) Source #

type GroupDirectInvitationRow = (Maybe ConnReqInvitation, Maybe GroupId, Maybe GroupMemberId, Maybe Int64, BoolInt) Source #

type ContactRow' = (ProfileId, ContactName, ContactName, Text, Maybe Text, Maybe ImageData, Maybe ConnLinkContact, Maybe ChatPeerType, LocalAlias, BoolInt, ContactStatus) :. ((Maybe MsgFilter, Maybe BoolInt, BoolInt, Maybe Preferences, Preferences, UTCTime, UTCTime, Maybe UTCTime) :. (PreparedContactRow :. ((Maybe Int64, Maybe GroupMemberId, BoolInt) :. (GroupDirectInvitationRow :. (Maybe UIThemeEntityOverrides, BoolInt, Maybe CustomData, Maybe Int64))))) Source #

toACreatedConnLink_ :: Maybe AConnectionRequestUri -> Maybe AConnShortLink -> Maybe ACreatedConnLink Source #

getProfileById :: Connection -> UserId -> Int64 -> ExceptT StoreError IO LocalProfile Source #

type ContactRequestRow = (Int64, ContactName, AgentInvId, Maybe ContactId, Maybe GroupId, Maybe Int64) :. ((Int64, ContactName, Text, Maybe Text, Maybe ImageData, Maybe ConnLinkContact, Maybe ChatPeerType) :. (Maybe XContactId, PQSupport, Maybe SharedMsgId, Maybe SharedMsgId, Maybe Preferences, UTCTime, UTCTime, VersionChat, VersionChat)) Source #

userQuery :: Query Source #

toUser :: ((UserId, UserId, ContactId, ProfileId, BoolInt, Int64) :. ((ContactName, Text, Maybe Text, Maybe ImageData, Maybe ConnLinkContact, Maybe ChatPeerType, Maybe Preferences) :. (BoolInt, BoolInt, BoolInt, BoolInt, Maybe B64UrlByteString, Maybe B64UrlByteString, Maybe UTCTime, Maybe UIThemeEntityOverrides))) -> User Source #

toPendingContactConnection :: (Int64, ConnId, ConnStatus, Maybe ByteString, Maybe Int64, Maybe GroupLinkId, Maybe Int64, Maybe ConnReqInvitation, Maybe ShortLinkInvitation, LocalAlias, UTCTime, UTCTime) -> PendingContactConnection Source #

getConnReqInv :: Connection -> Int64 -> ExceptT StoreError IO ConnReqInvitation Source #

withLocalDisplayName :: Connection -> UserId -> Text -> (Text -> IO (Either StoreError a)) -> IO (Either StoreError a) Source #

Saves unique local display name based on passed displayName, suffixed with _N if required. This function should be called inside transaction.

createWithRandomId :: TVar ChaChaDRG -> (ByteString -> IO a) -> ExceptT StoreError IO a Source #

createWithRandomId' :: TVar ChaChaDRG -> (ByteString -> IO (Either StoreError a)) -> ExceptT StoreError IO a Source #

createWithRandomBytes :: Int -> TVar ChaChaDRG -> (ByteString -> IO a) -> ExceptT StoreError IO a Source #

createWithRandomBytes' :: Int -> TVar ChaChaDRG -> (ByteString -> IO (Either StoreError a)) -> ExceptT StoreError IO a Source #

encodedRandomBytes :: TVar ChaChaDRG -> Int -> IO ByteString Source #

assertNotUser :: Connection -> User -> Contact -> ExceptT StoreError IO () Source #

safeDeleteLDN :: Connection -> User -> ContactName -> IO () Source #

type PreparedGroupRow = (Maybe ConnReqContact, Maybe ShortLinkContact, BoolInt, BoolInt, Maybe SharedMsgId, Maybe SharedMsgId) Source #

type GroupInfoRow = (Int64, GroupName, GroupName, Text, Maybe Text, Text, Maybe Text, Maybe ImageData) :. ((Maybe MsgFilter, Maybe BoolInt, BoolInt, Maybe GroupPreferences, Maybe GroupMemberAdmission) :. ((UTCTime, UTCTime, Maybe UTCTime, Maybe UTCTime) :. (PreparedGroupRow :. (BusinessChatInfoRow :. ((Maybe UIThemeEntityOverrides, Int64, Maybe CustomData, Maybe Int64, Int, Maybe ConnReqContact) :. GroupMemberRow))))) Source #

type GroupMemberRow = (GroupMemberId, GroupId, Int64, MemberId, VersionChat, VersionChat, GroupMemberRole, GroupMemberCategory, GroupMemberStatus, BoolInt, Maybe MemberRestrictionStatus) :. ((Maybe Int64, Maybe GroupMemberId, ContactName, Maybe ContactId, ProfileId) :. (ProfileRow :. ((UTCTime, UTCTime) :. (Maybe UTCTime, Int64, Int64, Int64, Maybe UTCTime)))) Source #

type ProfileRow = (ProfileId, ContactName, Text, Maybe Text, Maybe ImageData, Maybe ConnLinkContact, Maybe ChatPeerType, LocalAlias, Maybe Preferences) Source #

createChatTag :: Connection -> User -> Maybe Text -> Text -> IO ChatTagId Source #

deleteChatTag :: Connection -> User -> ChatTagId -> IO () Source #

updateChatTag :: Connection -> User -> ChatTagId -> Maybe Text -> Text -> IO () Source #

updateChatTagOrder :: Connection -> User -> ChatTagId -> Int -> IO () Source #

reorderChatTags :: Connection -> User -> [ChatTagId] -> IO () Source #

getUserChatTags :: Connection -> User -> IO [ChatTag] Source #

getGroupChatTags :: Connection -> GroupId -> IO [ChatTagId] Source #

setViaGroupLinkUri :: Connection -> GroupId -> Int64 -> IO () Source #

deleteConnectionRecord :: Connection -> User -> Int64 -> IO () Source #