sprinkles-0.6.0.0: JSON API to HTML website wrapper

Safe HaskellNone
LanguageHaskell2010

Web.Sprinkles.Backends

Contents

Description

Main Backend module.

Synopsis

Defining backends

data BackendSpec Source #

A specification of a backend query.

Constructors

BackendSpec 

Fields

Instances
Show BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic BackendSpec Source # 
Instance details

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
}
Instance details

Defined in Web.Sprinkles.Backends.Spec

Serialize BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

HasCachePolicy BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

ExpandableM Text BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Methods

expandM :: Monad m => (Text -> m Text) -> BackendSpec -> m BackendSpec Source #

type Rep BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Fetching backend data

data BackendData p m h Source #

A parsed record from a query result.

Constructors

BackendData 

Fields

Instances
ToJSON (BackendData p m h) Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

MonadIO m => ToGVal (Run p m h) (BackendData p m h) Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

Methods

toGVal :: BackendData p m h -> GVal (Run p m h) #

data BackendMeta Source #

Metadata for a backend query result.

Constructors

BackendMeta 

Fields

Instances
Show BackendMeta Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

Generic BackendMeta Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

Associated Types

type Rep BackendMeta :: * -> * #

ToJSON BackendMeta Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

Serialize BackendMeta Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

ToGVal m BackendMeta Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

Methods

toGVal :: BackendMeta -> GVal m #

type Rep BackendMeta Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

data Items a Source #

The shapes of data that can be returned from a backend query.

Constructors

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 # 
Instance details

Defined in Web.Sprinkles.Backends.Data

Methods

fmap :: (a -> b) -> Items a -> Items b #

(<$) :: a -> Items b -> Items a #

Foldable Items Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

Methods

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 #

toList :: Items a -> [a] #

null :: Items a -> Bool #

length :: Items a -> Int #

elem :: Eq a => a -> Items a -> Bool #

maximum :: Ord a => Items a -> a #

minimum :: Ord a => Items a -> a #

sum :: Num a => Items a -> a #

product :: Num a => Items a -> a #

ToGVal m a => ToGVal m (Items a) Source # 
Instance details

Defined in Web.Sprinkles.Backends.Data

Methods

toGVal :: Items a -> GVal m #

ToJSON a => ToJSON (Items a) Source # 
Instance details

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.