j      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK L M N O PQRSTUVWXYZ[\]^_`abcdefghi None jType alias for k Creates a 200 (OK) l* with the given content-type and resposne  body m+Helper to make responses with content-type "text/html" Creates a 200 (OK) l with content-type "text/html" and the  given resposne body .Given a URL returns a 301 (Moved Permanently) l redirecting to  that URL. &Given a URL returns a 303 (See Other) l redirecting to that URL. Returns a 400 (Bad Request) l. 'Returns a 401 (Authorization Required) l requiring basic $ authentication in the given realm. Returns a 403 (Forbidden) l. Returns a 404 (Not Found) l. Returns a 500 (Server Error) l. jm   jm None The   type is a basic instance of  that simply holds the Jrouting function and an arbitrary additional data parameter. The power is derived from the instances of n and o, which allow the Asimple construction of complex routing rules using either lists (o) or $do-notation. Moreover, because of it's simple type, any  can be used as a   (using  or by applying it to  ), making it :possible to leverage the monadic or monoid syntax for any . +Commonly, route functions that construct a   only inspect the p #and other parameters. For example,  looks at the hostname:   < routeHost :: Routeable r => S.ByteString -> r -> Route () ' routeHost host route = Route func () / where func req = if host == serverName req / then runRoute route req + else return Nothing 1However, because the result of a route is in the q( monad, routes have all the power of an r and can make Pstate-dependant decisions. For example, it is trivial to implement a route that /succeeds for every other request (perhaps for A/ B testing):  2 routeEveryOther :: (Routeable r1, Routeable r2) 6 => TVar Int -> r1 -> r2 -> Route () 0 routeEveryOther counter r1 r2 = Route func ()  where func req = do  i <- liftIO . atomically $ do  i' <- readTVar counter ( writeTVar counter (i' + 1)  return i'  if i s 2 == 0 # then runRoute r1 req # else runRoute r2 req 4 types can be converted into a route function using . %If the route is matched it returns a l , otherwise t.  In general, s are data-dependant (on the p ), but don't have to be. For example, r is an instance of  that always  returns a l:  ' instance Routeable Application where 1 runRoute app req = app req >>= return . Just  Converts any  into an r that can be passed directly  to a WAI server. 5A route that always matches (useful for converting a  into a   ). !Matches on the hostname from the p. The route only successeds on  exact matches. ?Matches if the path is empty. Note that this route checks that u I is empty, so it works as expected when nested under namespaces or other  routes that pop the u list. )Matches on the HTTP request method (e.g. v, w, x) 3Routes the given URL pattern. Patterns can include 9 directories as well as variable patterns (prefixed with :) to be added  to y (see )  /posts/:id  /posts/:id/new  /:date/posts/ :category/new =Matches if the first directory in the path matches the given  ByteString 5Always matches if there is at least one directory in u but and  adds a parameter to y* where the key is the first parameter and 4 the value is the directory consumed from the path.  z{|}~     z{|}~None A  is a - monad that contains the HTTP request in its  environment. A  is  simply by running the . Reads the underlying p CRedirect back to the referer. If the referer header is not present  redirect to root (i.e., /). CRedirect back to the referer. If the referer header is not present  fallback on the given l. *Looks up the parameter name in the request's query string and returns the  value as a k or t. .For example, for a request with query string: "?foo=bar&baz=7",    queryParam "foo"    would return  Just "bar", but    queryParam "zap"  would return Nothing  An alias for  that'0s helps the the compiler type a code block as a  . For example, when using the    routing DSL to , define a simple route that justs returns a l,  can be used + to avoid explicit typing of the argument:    get "/" $ do  someSideEffect  respond $ okHtml " Hello World"  instead of:   get "/" $ (do  someSideEffect  return $ okHtml " Hello World") :: Controller Response 1Returns the value of the given request header or t if it is not  present in the HTTP request. 0Reads and returns the body of the HTTP request. ?Parses a HTML form from the request body. It returns a list of s as  well as a list of )s, which are pairs mapping the name of a file form  field to a 7 pointing to a temporary file with the contents of the  upload.   myController = do  (prms, files) < - parseForm  let mPicFile = lookup " profile_pic" files  case mPicFile of  Just (picFile) -> do - sourceFile (fileContent picFile) $$  sinkFile ("images/" ++ (fileName picFile))  respond $ redirectTo "/"  Nothing -> redirectBack   Fallback l Parameter name  None An   authenticates a p" and, if successful, forwards the  p to the . !An  ? that uses HTTP basic authentication to authenticate a request  in a particular realm. " Wraps an  6 to take a simpler authentication function (that just 1 just takes a username and password, and returns  or  ). It also  adds an "X-User" header to the p with the authenticated user's ; name (the first argument to the authentication function). #A  K that uses HTTP basic authentication to authenticate a request for a realm H with the given username ans password. The request is rewritten with an 'X-User' header L containing the authenticated username before being passed to the next next  .  !"# !"# !"# !"#NoneHelper method $0Matches the GET method on the given URL pattern %1Matches the POST method on the given URL pattern &0Matches the PUT method on the given URL pattern '3Matches the DELETE method on the given URL pattern (4Matches the OPTIONS method on the given URL pattern $%&'($%&'($%&'($%&'(None)*+,-./0)*+,-./0)*.+/0,- )*+,-./0 None  Safe-Inferred123456789:;<=>?@ABCDEFGHIJ123456789:;<=>?@ABCDEFGHIJ9:;<=8>?@ABCD276543EFGH1IJ127654389:;<=>?@ABCDEFGHIJ NoneKLMNKLMNKLMNKLMN NoneO123456789:;<=>?@ABCDEFGHIJOOONoneP Defines a "has-many", relationship between two models, where the parent 2 model may be associated with zero or more of the child model. Specifically,  the child> table has a foreign key column pointing to the parent model. WJBasis type for PostgreSQL-backed data-models. Instances must, at minimum,  implement Y, Z and [. /Note: the column ordering ! must match that used in the type's implementation of  and / Y&Given a model, returns the value of it'#s primary key. In many cases, this / will simply be an alias to a record accessor. Z Returns the e7 of the model. Instances should have a top-level value  for the e' that is always returned. For example: ! employees :: TableName Employee # employees = TableName "employees"  ) instance PostgreSQLModel Employee where  ...  tableName _ = employess [1Column names excluding primary key. Column order must match the ordering  used in  and . \%Name of primary key column (default: "id"). ].Column names with primary-key name prepended. _BInserts the model into the database. It relies on the primary key & being autogenerated by the database. `ACreate or update the model (uses the primary key to determine if + the model already exists in the database) aBRetrieves the single model corresponding to the given primary key bMFinds the first model in the database based on the column-value contstraint. c"Retrieves all models in the table dJRetrieves all models in the table subject to the column-value constraint. e1Wrapper type representing PostgreSQL table names h"Converts an HTML form into a type i Unwraps a e PQRSTUVWXYZ[\]^_`abSearch column name  Search value cdSearch column name  Search value efghiPQRSTUVWXYZ[\]^_`abcdefghighWXYZ[\]^_`abcdPQRSTUVefiPQRSTUVW XYZ[\]^_`abcdefghi !"#$%&'()*+,-./0123456789:;<=>?@8ABCDEFGHIJKLMNOPQRSTUVWXYZ [ \ ] ^ _`abcdefghijklmnopqrstuuvwxyz{|} ~} } } }  simple-0.3.0Database.PostgreSQL.ModelsWeb.Simple.ResponsesWeb.Simple.RouterWeb.Simple.ControllerWeb.Simple.Auth Web.FrankWeb.RESTDatabase.SequelDatabase.ConnectionDatabase.Migrations Network.WaiFrank Web.Simplebase Data.String fromStringIsStringwai-extra-1.3.2.1Network.Wai.ParseParamokokHtmlmovedTo redirectTo badRequestrequireBasicAuth forbiddennotFound serverErrorRoute RouteablerunRoutemkRouterrouteAll routeHostrouteTop routeMethod routePattern routeNamerouteVar Controllerrequest redirectBackredirectBackOr queryParamrespondbody parseForm AuthRouterbasicAuthRouteauthRewriteReq basicAuthgetpostputdeleteoptionsRESTControllerindexcreateeditnewshowupdate CreateTableColumnConstraint REFERENCESDEFAULT PRIMARY_KEYUNIQUENOT_NULL ColumnTypeSequel runSequelappend drop_table create_tableserialintegertimevarcharstringtextbooleanstringifyConstraint drop_column add_column rename_columnrunCreateTablecolumnconnscreateConnection parseDbURLwithConnection defaultMainHasMany foreignKey childrenOfchildOf childOfBy childrenOfBy insertForPostgreSQLModel PrimaryKey primaryKey tableNamecolumnsprimaryKeyNamecolumns_orderByinsertupsertfind findFirstfindAll findAllBy TableName FromParams fromParams fromTableName ContentTypebytestring-0.10.0.2Data.ByteString.Internal ByteString wai-1.3.0.2ResponsemkHtmlResponseGHC.BaseMonad Data.MonoidMonoidRequestresourcet-0.4.4Control.Monad.Trans.Resource ResourceT ApplicationGHC.Realmod Data.MaybeNothingpathInfohttp-types-0.8.0Network.HTTP.Types.MethodGETPOSTPUT queryStringmroute$fRouteableRoute $fMonoidRoute $fMonadRoute$fRouteableResponse$fRouteable(->)transformers-0.3.0.0Control.Monad.Trans.ReaderReaderreturn requestHeaderFileFileInfoControllerState csRequest$fRouteableReaderTghc-prim GHC.TypesTrueFalse frankMethodRESTControllerMRESTControllerState restIndexrestShow restCreate restUpdate restDeleterestEditrestNewdefaultRESTControllerState$fRouteableStateT$fRouteableRESTControllerStatepostgresql-simple-0.2.4.1"Database.PostgreSQL.Simple.FromRowFromRow Database.PostgreSQL.Simple.ToRowToRow$fFromParams(,)