Safe Haskell | None |
---|---|
Language | Haskell2010 |
Avers.Types
- class Pk a where
- newtype Path = Path {}
- rootPath :: Path
- newtype ObjId = ObjId {}
- rootObjId :: ObjId
- newtype RevId = RevId {}
- zeroRevId :: RevId
- data ObjectId
- objectIdParser :: Parser ObjectId
- parseObjectId :: Text -> Maybe ObjectId
- objectIdBase :: ObjectId -> ObjId
- data Operation
- data PatchError = UnknownPatchError !Text
- type PatchM a = Either PatchError a
- data Object = Object {
- objectId :: !ObjId
- objectType :: !Text
- objectCreatedAt :: !UTCTime
- objectCreatedBy :: !ObjId
- objectDeleted :: !(Maybe Bool)
- data Patch = Patch {}
- data Snapshot = Snapshot {}
- initialSnapshot :: ObjectId -> Snapshot
- data Release = Release
- newtype SecretId = SecretId {
- unSecretId :: Text
- data Secret = Secret {
- secretId :: !SecretId
- secretValue :: !Text
- newtype BlobId = BlobId {}
- data Blob = Blob {}
- newtype SessionId = SessionId {
- unSessionId :: Text
- data Session = Session {}
- data AversError
- internalError :: AversError -> Avers a
- internal :: Avers a -> Avers a
- databaseError :: Text -> Avers a
- patchError :: PatchError -> Avers a
- parseError :: MonadError AversError m => Value -> Text -> m a
- documentNotFound :: Text -> Avers a
- strErr :: String -> Avers a
- data ObjectType a = ObjectType {}
- data SomeObjectType where
- SomeObjectType :: (ToDatum a, FromDatum a, FromJSON a, ToJSON a) => ObjectType a -> SomeObjectType
- parseValueAs :: FromJSON a => ObjectType a -> Value -> Either AversError a
- data Config = Config {
- databaseURI :: !URI
- putBlob :: BlobId -> Text -> ByteString -> IO (Either AversError ())
- objectTypes :: ![SomeObjectType]
- emitMeasurement :: Measurement -> Double -> IO ()
- data Change = CPatch !Patch
- data Handle = Handle {}
- newtype Avers a = Avers {}
- class Monad m => MonadAvers m where
- evalAvers :: Handle -> Avers a -> IO (Either AversError a)
- data View obj a = View {
- viewName :: Text
- viewParser :: Datum -> Either AversError a
- viewObjectTransformer :: obj -> Avers (Maybe a)
- viewIndices :: [SomeIndex]
- data SomeView obj where
Documentation
Pk - Types which can be converted to a database primary key.
Minimal complete definition
Path
ObjId
The root object id is used for object created internally or when there is no applicable creator.
RevId
ObjectId
Constructors
BaseObjectId !ObjId | The base object whose snapshots contain the actual content. |
ReleaseObjectId !ObjId !RevId | An object describing a particualar release of the base object. |
AuthorizationObjectId !ObjId | Object which contains authorization rules. |
parseObjectId :: Text -> Maybe ObjectId #
objectIdBase :: ObjectId -> ObjId #
The operations that can be applied to JSON values.
data PatchError #
Constructors
UnknownPatchError !Text |
Instances
Show PatchError # | |
Generic PatchError # | |
type Rep PatchError # | |
type PatchM a = Either PatchError a #
Constructors
Object | |
Fields
|
Patch
Constructors
Patch | |
Fields
|
Snapshot
Constructors
Snapshot | |
Fields
|
initialSnapshot :: ObjectId -> Snapshot #
The initial snapshot on top of which all future patches are applied.
(deriveJSONOptions "release") ''Release)
SecretId
Constructors
SecretId | |
Fields
|
Secret
A Secret
is a password (encrypted with scrypt) that is attached to
a SecretId
(for example the ObjId
of an account).
It is up to you to ensure that SecretId
s are unique. If you use ObjId
s
then they by definition are.
Constructors
Secret | |
Fields
|
BlobId
Blob
SessionId
Constructors
SessionId | |
Fields
|
The session record that is stored in the database.
A session is a unique identifier attached to a particular object. It contains the creation date and when it was last accessed. If you need to store additional data for a session, we recommend to use cookies.
Constructors
Session | |
Fields
|
data AversError #
Constructors
InternalError !AversError | |
DatabaseError !Text | |
PatchError !PatchError | |
ParseError !Value !Text | |
UnknownObjectType !Text | |
ObjectNotFound !ObjId | |
DocumentNotFound !Text | |
AversError !Text | |
NotAuthorized |
Instances
internalError :: AversError -> Avers a #
databaseError :: Text -> Avers a #
patchError :: PatchError -> Avers a #
parseError :: MonadError AversError m => Value -> Text -> m a #
documentNotFound :: Text -> Avers a #
data ObjectType a #
An ObjectType
describes a particular type of object that is managed by
Avers.
data SomeObjectType where #
Constructors
SomeObjectType :: (ToDatum a, FromDatum a, FromJSON a, ToJSON a) => ObjectType a -> SomeObjectType |
parseValueAs :: FromJSON a => ObjectType a -> Value -> Either AversError a #
Configuration of the Avers
monad.
Constructors
Config | |
Fields
|
A change in the system, for example a new object, patch, release, blob etc.
Constructors
Handle | |
Fields
|
Instances
Instances
class Monad m => MonadAvers m where #
Minimal complete definition
Instances
MonadAvers Avers # | |
MonadAvers m => MonadAvers (StateT s m) # | |
Constructors
View | |
Fields
|