{-# LANGUAGE TemplateHaskell #-}
module Wire.IndexedUserStore where
import Data.Id
import Database.Bloodhound qualified as ES
import Database.Bloodhound.Types hiding (SearchResult)
import Imports
import Polysemy
import Wire.API.Team.Size
import Wire.API.User.Search
import Wire.UserSearch.Types
data IndexedUserStoreError
= IndexUpdateError ES.EsError
| IndexLookupError ES.EsError
| IndexError Text
deriving (Int -> IndexedUserStoreError -> ShowS
[IndexedUserStoreError] -> ShowS
IndexedUserStoreError -> String
(Int -> IndexedUserStoreError -> ShowS)
-> (IndexedUserStoreError -> String)
-> ([IndexedUserStoreError] -> ShowS)
-> Show IndexedUserStoreError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IndexedUserStoreError -> ShowS
showsPrec :: Int -> IndexedUserStoreError -> ShowS
$cshow :: IndexedUserStoreError -> String
show :: IndexedUserStoreError -> String
$cshowList :: [IndexedUserStoreError] -> ShowS
showList :: [IndexedUserStoreError] -> ShowS
Show)
instance Exception IndexedUserStoreError
data IndexedUserStore m a where
Upsert :: DocId -> UserDoc -> VersionControl -> IndexedUserStore m ()
UpdateTeamSearchVisibilityInbound ::
TeamId ->
SearchVisibilityInbound ->
IndexedUserStore m ()
BulkUpsert :: [(DocId, UserDoc, VersionControl)] -> IndexedUserStore m ()
DoesIndexExist :: IndexedUserStore m Bool
SearchUsers ::
UserId ->
Maybe TeamId ->
TeamSearchInfo ->
Text ->
Int ->
IndexedUserStore m (SearchResult UserDoc)
PaginateTeamMembers ::
BrowseTeamFilters ->
Int ->
Maybe PagingState ->
IndexedUserStore m (SearchResult UserDoc)
GetTeamSize :: TeamId -> IndexedUserStore m TeamSize
makeSem ''IndexedUserStore