servant-auth-token-leveldb-0.4.2.0: Leveldb backend for servant-auth-token server

Safe HaskellNone
LanguageHaskell2010

Servant.Server.Auth.Token.LevelDB.Schema

Contents

Synopsis

Documentation

modelId :: ModelId Source #

Global id of model index

data Model Source #

Holds all data for auth server in acid-state container

newModel :: Model Source #

Defines empty model for new database

data LevelDBEnv Source #

Holds together db reference and options for read/write and mutex

newLevelDBEnv :: MonadIO m => DB -> ReadOptions -> WriteOptions -> m LevelDBEnv Source #

Make new environment for execution of LevelDB operations

load :: (MonadResource m, Key i a, SafeCopy a) => LevelDBEnv -> i -> m (Maybe a) Source #

Load object by id from leveldb

store :: (MonadResource m, Key i a, SafeCopy a) => LevelDBEnv -> i -> a -> m () Source #

Store object by id in leveldb

remove :: (MonadResource m, Key i a) => LevelDBEnv -> i -> m () Source #

Remove object by given id in leveldb

modify :: (MonadResource m, MonadMask m, Key i a, SafeCopy a) => LevelDBEnv -> i -> (a -> a) -> m () Source #

Modify value by id in leveldb

modifyM :: (MonadResource m, MonadMask m, Key i a, SafeCopy a) => LevelDBEnv -> i -> (a -> m a) -> m () Source #

Modify value by id in leveldb

loadModel :: MonadResource m => LevelDBEnv -> m Model Source #

Load global index from leveldb

storeModel :: MonadResource m => LevelDBEnv -> Model -> m () Source #

Store glogal index to leveldb

modifyModel :: MonadResource m => LevelDBEnv -> (Model -> Model) -> m () Source #

Modify global index

modifyModelM :: (MonadResource m, MonadMask m) => LevelDBEnv -> (Model -> m (Model, a)) -> m a Source #

Modify global index

getPagedList :: (MonadResource m, Ord i, Key i a, SafeCopy a) => LevelDBEnv -> Page -> PageSize -> Set i -> m ([WithId i a], Word) Source #

Helper to get paged list of entities

insertRecord Source #

Arguments

:: (MonadResource m, MonadMask m, Key i a, ConvertableKey i, Ord i, SafeCopy a) 
=> Lens' Model Int64

Field of model that store counter of the record ids

-> Lens' Model (Set i)

Field of model that store a registry of the record ids

-> a 
-> LevelDBEnv 
-> m i 

Generic way to insert record in the leveldb with track in global registry

selectRecords Source #

Arguments

:: (MonadResource m, Key i a, SafeCopy a) 
=> Lens' Model (Set i)

Model field with registry of the records

-> (i -> a -> Bool)

Predicate

-> LevelDBEnv 
-> m [WithId i a] 

Generic way to select all records that satisfies given predicate

deleteRecords Source #

Arguments

:: (MonadResource m, MonadMask m, Key i a, Ord i, Foldable f) 
=> Lens' Model (Set i)

Model field with registry of the records

-> f i

Set of ids of records that should be deleted

-> LevelDBEnv 
-> m () 

Generic way to delete several records with respect of global registry

replaceRecord Source #

Arguments

:: (MonadResource m, MonadMask m, Key i a, Ord i, SafeCopy a) 
=> Lens' Model (Set i)

Model field with registry of the records

-> i

ID of record

-> a

Value of record

-> LevelDBEnv 
-> m () 

Generic way to replace record in registry and leveldb

withId :: WithField s i a -> i Source #

Extract id

withVal :: WithField s i a -> a Source #

Extract value

getUserImplByLogin :: MonadResource m => Login -> LevelDBEnv -> m (Maybe (WithId UserImplId UserImpl)) Source #

Getting user from storage by login

listUsersPaged :: MonadResource m => Page -> PageSize -> LevelDBEnv -> m ([WithId UserImplId UserImpl], Word) Source #

Get paged list of users and total count of users

getUserImplPermissions :: MonadResource m => UserImplId -> LevelDBEnv -> m [WithId UserPermId UserPerm] Source #

Get user permissions, ascending by tag

deleteUserPermissions :: (MonadResource m, MonadMask m) => UserImplId -> LevelDBEnv -> m () Source #

Delete user permissions

insertUserPerm :: (MonadResource m, MonadMask m) => UserPerm -> LevelDBEnv -> m UserPermId Source #

Insertion of new user permission

insertUserImpl :: (MonadResource m, MonadMask m) => UserImpl -> LevelDBEnv -> m UserImplId Source #

Insertion of new user

replaceUserImpl :: (MonadResource m, MonadMask m) => UserImplId -> UserImpl -> LevelDBEnv -> m () Source #

Replace user with new value

deleteUserImpl :: (MonadResource m, MonadMask m) => UserImplId -> LevelDBEnv -> m () Source #

Delete user by id

hasPerm :: MonadResource m => UserImplId -> Permission -> LevelDBEnv -> m Bool Source #

Check whether the user has particular permission

getFirstUserByPerm :: MonadResource m => Permission -> LevelDBEnv -> m (Maybe (WithId UserImplId UserImpl)) Source #

Get any user with given permission

selectUserImplGroups :: MonadResource m => UserImplId -> LevelDBEnv -> m [WithId AuthUserGroupUsersId AuthUserGroupUsers] Source #

Select user groups and sort them by ascending name

clearUserImplGroups :: (MonadResource m, MonadMask m) => UserImplId -> LevelDBEnv -> m () Source #

Remove user from all groups

replaceAuthUserGroup :: (MonadResource m, MonadMask m) => AuthUserGroupId -> AuthUserGroup -> LevelDBEnv -> m () Source #

Replace record of user group

clearAuthUserGroupUsers :: (MonadResource m, MonadMask m) => AuthUserGroupId -> LevelDBEnv -> m () Source #

Remove all users from group

clearAuthUserGroupPerms :: (MonadResource m, MonadMask m) => AuthUserGroupId -> LevelDBEnv -> m () Source #

Remove all permissions from group

deleteAuthUserGroup :: (MonadResource m, MonadMask m) => AuthUserGroupId -> LevelDBEnv -> m () Source #

Delete user group from storage

listGroupsPaged :: MonadResource m => Page -> PageSize -> LevelDBEnv -> m ([WithId AuthUserGroupId AuthUserGroup], Word) Source #

Get paged list of user groups with total count

setSingleUseCodeUsed :: (MonadResource m, MonadMask m) => UserSingleUseCodeId -> Maybe UTCTime -> LevelDBEnv -> m () Source #

Set usage time of the single use code

getUnusedCode :: MonadResource m => SingleUseCode -> UserImplId -> UTCTime -> LevelDBEnv -> m (Maybe (WithId UserSingleUseCodeId UserSingleUseCode)) Source #

Find unused code for the user and expiration time greater than the given time

invalidatePermamentCodes :: (MonadResource m, MonadMask m) => UserImplId -> UTCTime -> LevelDBEnv -> m () Source #

Invalidate all permament codes for user and set use time for them

selectLastRestoreCode :: MonadResource m => UserImplId -> UTCTime -> LevelDBEnv -> m (Maybe (WithId UserRestoreId UserRestore)) Source #

Select last valid restoration code by the given current time

findRestoreCode :: MonadResource m => UserImplId -> RestoreCode -> UTCTime -> LevelDBEnv -> m (Maybe (WithId UserRestoreId UserRestore)) Source #

Find unexpired by the time restore code

replaceRestoreCode :: (MonadResource m, MonadMask m) => UserRestoreId -> UserRestore -> LevelDBEnv -> m () Source #

Replace restore code with new value

findAuthToken :: MonadResource m => UserImplId -> UTCTime -> LevelDBEnv -> m (Maybe (WithId AuthTokenId AuthToken)) Source #

Find first non-expired by the time token for user

replaceAuthToken :: (MonadResource m, MonadMask m) => AuthTokenId -> AuthToken -> LevelDBEnv -> m () Source #

Replace auth token with new value

Orphan instances

SafeCopy UserImplId Source # 
SafeCopy UserImpl Source # 
SafeCopy UserPermId Source # 
SafeCopy UserPerm Source # 
SafeCopy AuthTokenId Source # 
SafeCopy AuthToken Source # 
SafeCopy UserRestoreId Source # 
SafeCopy UserRestore Source # 
SafeCopy UserSingleUseCodeId Source # 
SafeCopy UserSingleUseCode Source # 
SafeCopy AuthUserGroupId Source # 
SafeCopy AuthUserGroup Source # 
SafeCopy AuthUserGroupUsersId Source # 
SafeCopy AuthUserGroupUsers Source # 
SafeCopy AuthUserGroupPermsId Source # 
SafeCopy AuthUserGroupPerms Source # 
(SafeCopy k, SafeCopy v) => SafeCopy (WithField i k v) Source #