| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Web.Sprinkles.Backends.Spec
Contents
Description
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.
Constructors
| BackendSpec | |
Fields
| |
Instances
| Show BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods showsPrec :: Int -> BackendSpec -> ShowS # show :: BackendSpec -> String # showList :: [BackendSpec] -> ShowS # | |
| Generic BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec Associated Types type Rep 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 | |
| Serialize BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec | |
| HasCachePolicy BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods cachePolicy :: BackendSpec -> CachePolicy Source # | |
| ExpandableM Text BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods 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.
Constructors
| 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?
Constructors
| 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.
Constructors
| 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)))) | |
Constructors
| Ascending | |
| Descending |
data FetchOrder Source #
How to order results.
Constructors
| FetchOrder | |
Fields
| |
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.
Constructors
| AnonymousCredentials |
Instances
| Show Credentials Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods showsPrec :: Int -> Credentials -> ShowS # show :: Credentials -> String # showList :: [Credentials] -> ShowS # | |
| Generic Credentials Source # | |
Defined in Web.Sprinkles.Backends.Spec Associated Types type Rep Credentials :: * -> * # | |
| FromJSON Credentials Source # | |
Defined in Web.Sprinkles.Backends.Spec | |
| Serialize Credentials Source # | |
Defined in Web.Sprinkles.Backends.Spec | |
| type Rep Credentials Source # | |
data HttpMethod Source #
Instances
| Show HttpMethod Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods showsPrec :: Int -> HttpMethod -> ShowS # show :: HttpMethod -> String # showList :: [HttpMethod] -> ShowS # | |
| Generic HttpMethod Source # | |
Defined in Web.Sprinkles.Backends.Spec Associated Types type Rep HttpMethod :: * -> * # | |
| FromJSON HttpMethod Source # | |
Defined in Web.Sprinkles.Backends.Spec | |
| Serialize HttpMethod Source # | |
Defined in Web.Sprinkles.Backends.Spec | |
| type Rep HttpMethod Source # | |
data HttpBackendOptions Source #
Constructors
| HttpBackendOptions | |
Fields | |
Instances
data CachePolicy Source #
Constructors
| CacheForever | |
| NoCaching |
class HasCachePolicy a where Source #
Minimal complete definition
Methods
cachePolicy :: a -> CachePolicy Source #
Instances
| HasCachePolicy BackendSpec Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods cachePolicy :: BackendSpec -> CachePolicy Source # | |
| HasCachePolicy BackendType Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods cachePolicy :: BackendType -> CachePolicy Source # | |
data ParserType Source #
Constructors
| ParserText | |
| ParserJSON | |
| ParserYAML | |
| ParserFormUrlencoded | |
| ParserMarkdown | |
| ParserCreole | |
| ParserTextile | |
| ParserRST | |
| ParserLaTeX | |
| ParserDocX | |
| ParserHtml |
Instances
| Read ParserType Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods readsPrec :: Int -> ReadS ParserType # readList :: ReadS [ParserType] # readPrec :: ReadPrec ParserType # readListPrec :: ReadPrec [ParserType] # | |
| Show ParserType Source # | |
Defined in Web.Sprinkles.Backends.Spec Methods showsPrec :: Int -> ParserType -> ShowS # show :: ParserType -> String # showList :: [ParserType] -> ShowS # | |
parserTypes :: [([MimeType], ParserType)] Source #
The parsers we know, by mime types.