Safe Haskell | None |
---|---|
Language | Haskell2010 |
Backend spec types and parser
Synopsis
- data BackendSpec = BackendSpec {}
- backendSpecFromJSON :: Value -> Parser BackendSpec
- makeBackendTypePathsAbsolute :: FilePath -> BackendType -> BackendType
- makeBackendSpecPathsAbsolute :: FilePath -> BackendSpec -> BackendSpec
- data BackendType
- data FetchOrderField
- data FetchMode
- data AscDesc
- data FetchOrder = FetchOrder {}
- parseBackendURI :: Monad m => Text -> m BackendSpec
- data Credentials = AnonymousCredentials
- data HttpMethod
- data HttpBackendOptions = HttpBackendOptions {}
- data CachePolicy
- class HasCachePolicy a where
- data ParserType
- parserTypes :: [([MimeType], ParserType)]
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))))) |
backendSpecFromJSON :: Value -> Parser BackendSpec Source #
Read a backend spec from a JSON value.
data BackendType Source #
A type of backend.
HttpBackend Text HttpBackendOptions | Fetch data over HTTP(S) |
FileBackend Text | Read local files |
SqlBackend DSN Text [Text] | Query an SQL database |
SqlMultiBackend DSN ResultSetMode [(Text, [Text])] | Query an SQL database, multiple queries |
SubprocessBackend Text [Text] MimeType | Run a command in a subprocess |
RequestBodyBackend | Read the incoming request body |
LiteralBackend Value | Return literal data from the spec itself |
Instances
data FetchOrderField Source #
By which field should we order results?
ArbitraryOrder | Do not impose any ordering at all |
RandomOrder | Shuffle randomly |
OrderByName | Order by reported name |
OrderByMTime | Order by modification time |
Instances
How many items to fetch, and in what shape.
FetchOne | Fetch only the first result |
FetchAll | Fetch all results |
FetchN Int | Fetch at most |
Instances
Eq FetchMode Source # | |
Read FetchMode Source # | |
Show FetchMode Source # | |
Generic FetchMode Source # | |
FromJSON FetchMode Source # | |
Serialize FetchMode Source # | |
type Rep FetchMode Source # | |
Defined in Web.Sprinkles.Backends.Spec type Rep FetchMode = D1 (MetaData "FetchMode" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) (C1 (MetaCons "FetchOne" PrefixI False) (U1 :: * -> *) :+: (C1 (MetaCons "FetchAll" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "FetchN" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))) |
data FetchOrder Source #
How to order results.
FetchOrder | |
|
Instances
parseBackendURI :: Monad m => Text -> m BackendSpec Source #
Parse a Text
into a BackendSpec
.
data Credentials Source #
Credentials to pass to an external backend data source. Currently stubbed, supporting only anonymous access.
Instances
Show Credentials Source # | |
Defined in Web.Sprinkles.Backends.Spec showsPrec :: Int -> Credentials -> ShowS # show :: Credentials -> String # showList :: [Credentials] -> ShowS # | |
Generic Credentials Source # | |
Defined in Web.Sprinkles.Backends.Spec type Rep Credentials :: * -> * # from :: Credentials -> Rep Credentials x # to :: Rep Credentials x -> Credentials # | |
FromJSON Credentials Source # | |
Defined in Web.Sprinkles.Backends.Spec parseJSON :: Value -> Parser Credentials # parseJSONList :: Value -> Parser [Credentials] # | |
Serialize Credentials Source # | |
Defined in Web.Sprinkles.Backends.Spec put :: Putter Credentials # get :: Get Credentials # | |
type Rep Credentials Source # | |
data HttpMethod Source #
Instances
Show HttpMethod Source # | |
Defined in Web.Sprinkles.Backends.Spec showsPrec :: Int -> HttpMethod -> ShowS # show :: HttpMethod -> String # showList :: [HttpMethod] -> ShowS # | |
Generic HttpMethod Source # | |
Defined in Web.Sprinkles.Backends.Spec type Rep HttpMethod :: * -> * # from :: HttpMethod -> Rep HttpMethod x # to :: Rep HttpMethod x -> HttpMethod # | |
FromJSON HttpMethod Source # | |
Defined in Web.Sprinkles.Backends.Spec parseJSON :: Value -> Parser HttpMethod # parseJSONList :: Value -> Parser [HttpMethod] # | |
Serialize HttpMethod Source # | |
Defined in Web.Sprinkles.Backends.Spec put :: Putter HttpMethod # get :: Get HttpMethod # | |
type Rep HttpMethod Source # | |
data HttpBackendOptions Source #
Instances
class HasCachePolicy a where Source #
cachePolicy :: a -> CachePolicy Source #
Instances
HasCachePolicy BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec cachePolicy :: BackendSpec -> CachePolicy Source # | |
HasCachePolicy BackendType Source # | |
Defined in Web.Sprinkles.Backends.Spec cachePolicy :: BackendType -> CachePolicy Source # |
data ParserType Source #
ParserText | |
ParserJSON | |
ParserYAML | |
ParserFormUrlencoded | |
ParserMarkdown | |
ParserCreole | |
ParserTextile | |
ParserRST | |
ParserLaTeX | |
ParserDocX | |
ParserHtml |
Instances
Read ParserType Source # | |
Defined in Web.Sprinkles.Backends.Spec readsPrec :: Int -> ReadS ParserType # readList :: ReadS [ParserType] # readPrec :: ReadPrec ParserType # readListPrec :: ReadPrec [ParserType] # | |
Show ParserType Source # | |
Defined in Web.Sprinkles.Backends.Spec showsPrec :: Int -> ParserType -> ShowS # show :: ParserType -> String # showList :: [ParserType] -> ShowS # |
parserTypes :: [([MimeType], ParserType)] Source #
The parsers we know, by mime types.