Safe Haskell | None |
---|---|
Language | Haskell2010 |
Main Backend module.
Synopsis
- data BackendSpec = BackendSpec {}
- makeBackendSpecPathsAbsolute :: FilePath -> BackendSpec -> BackendSpec
- parseBackendURI :: Monad m => Text -> m BackendSpec
- data BackendData p m h = BackendData {
- bdJSON :: Value
- bdGVal :: GVal (Run p m h)
- bdRaw :: RawBytes
- bdMeta :: BackendMeta
- bdChildren :: HashMap Text (BackendData p m h)
- bdVerification :: Verification
- data BackendMeta = BackendMeta {}
- data Items a
- = NotFound
- | SingleItem a
- | MultiItem [a]
- loadBackendData :: Monad m => (LogLevel -> Text -> IO ()) -> RequestContext -> RawBackendCache -> BackendSpec -> IO (Items (BackendData p m h))
- type RawBackendCache = Cache ByteString ByteString
- rawToLBS :: RawBytes -> IO LByteString
- rawFromLBS :: LByteString -> RawBytes
Defining backends
data BackendSpec Source #
A specification of a backend query.
BackendSpec | |
|
Instances
Show BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec showsPrec :: Int -> BackendSpec -> ShowS # show :: BackendSpec -> String # showList :: [BackendSpec] -> ShowS # | |
Generic BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec type Rep BackendSpec :: * -> * # from :: BackendSpec -> Rep BackendSpec x # to :: Rep BackendSpec x -> BackendSpec # | |
FromJSON BackendSpec Source # | The JSON shape of a backend spec is: { // type: one of: // - "http" (fetch over HTTP) // - "https" (fetch over HTTPS) // - "file" (load an individual file) // - "glob" (resolve a glob and load all matching files) // - "dir" (get a directory listing) // - "sql" (query an SQL database) // - "subprocess" (execute a subprocess and read its stdout) // - "post" (get the request body; only for POST requests) // - "literal" (return literal value as specified) "type": type, // fetch mode. One of: - "one": Fetch exactly one item, as a scalar - "all": Fetch all items, as a list - n (numeric value): Fetch up to n items, as a list "fetch": fetchMode, // ordering. One of: // - "arbitrary": do not reorder, use whatever the backend produces // - "random": random-shuffle results // - "shuffle": same as "random" // - "name": order by name // - "mtime": order by modification time // The ordering can be preceded with a "+" or "-" sign to indicate // ascending or descending ordering. "order": ordering, // The rest of the structure depends on the type. // For "http" and "https": // The HTTP(S) URI to load from "uri": uri, // For "file", "glob", "dir": // The local file path or glob "path": path } |
Defined in Web.Sprinkles.Backends.Spec parseJSON :: Value -> Parser BackendSpec # parseJSONList :: Value -> Parser [BackendSpec] # | |
Serialize BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec put :: Putter BackendSpec # get :: Get BackendSpec # | |
HasCachePolicy BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec cachePolicy :: BackendSpec -> CachePolicy Source # | |
ExpandableM Text BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec expandM :: Monad m => (Text -> m Text) -> BackendSpec -> m BackendSpec Source # | |
type Rep BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec type Rep BackendSpec = D1 (MetaData "BackendSpec" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) (C1 (MetaCons "BackendSpec" PrefixI True) ((S1 (MetaSel (Just "bsType") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 BackendType) :*: S1 (MetaSel (Just "bsFetchMode") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FetchMode)) :*: (S1 (MetaSel (Just "bsOrder") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FetchOrder) :*: (S1 (MetaSel (Just "bsMimeTypeOverride") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe MimeType)) :*: S1 (MetaSel (Just "bsCacheEnabled") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))))) |
parseBackendURI :: Monad m => Text -> m BackendSpec Source #
Parse a Text
into a BackendSpec
.
Fetching backend data
data BackendData p m h Source #
A parsed record from a query result.
BackendData | |
|
Instances
ToJSON (BackendData p m h) Source # | |
Defined in Web.Sprinkles.Backends.Data toJSON :: BackendData p m h -> Value # toEncoding :: BackendData p m h -> Encoding # toJSONList :: [BackendData p m h] -> Value # toEncodingList :: [BackendData p m h] -> Encoding # | |
MonadIO m => ToGVal (Run p m h) (BackendData p m h) Source # | |
Defined in Web.Sprinkles.Backends.Data toGVal :: BackendData p m h -> GVal (Run p m h) # |
data BackendMeta Source #
Metadata for a backend query result.
Instances
The shapes of data that can be returned from a backend query.
NotFound | Nothing was found |
SingleItem a | A single item was requested, and this is it |
MultiItem [a] | Multiple items were requested, here they are |
Instances
Functor Items Source # | |
Foldable Items Source # | |
Defined in Web.Sprinkles.Backends.Data fold :: Monoid m => Items m -> m # foldMap :: Monoid m => (a -> m) -> Items a -> m # foldr :: (a -> b -> b) -> b -> Items a -> b # foldr' :: (a -> b -> b) -> b -> Items a -> b # foldl :: (b -> a -> b) -> b -> Items a -> b # foldl' :: (b -> a -> b) -> b -> Items a -> b # foldr1 :: (a -> a -> a) -> Items a -> a # foldl1 :: (a -> a -> a) -> Items a -> a # elem :: Eq a => a -> Items a -> Bool # maximum :: Ord a => Items a -> a # minimum :: Ord a => Items a -> a # | |
ToGVal m a => ToGVal m (Items a) Source # | |
Defined in Web.Sprinkles.Backends.Data | |
ToJSON a => ToJSON (Items a) Source # | |
Defined in Web.Sprinkles.Backends.Data |
loadBackendData :: Monad m => (LogLevel -> Text -> IO ()) -> RequestContext -> RawBackendCache -> BackendSpec -> IO (Items (BackendData p m h)) Source #
Execute a backend query, with caching.
type RawBackendCache = Cache ByteString ByteString Source #
Cache for raw backend data, stored as bytestrings.
rawFromLBS :: LByteString -> RawBytes Source #