!"#$%&'()*+,-./0123456789:;<=> ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d efghijklmnopqrstuvwxyz{|}~ None Type alias for  Creates a 200 (OK) * with the given content-type and resposne  body +Helper to make responses with content-type "text/html" Creates a 200 (OK)  with content-type "text/html" and the  given resposne body Creates a 200 (OK)  with content-type " application/json" and the  given resposne body .Given a URL returns a 301 (Moved Permanently)  redirecting to  that URL. &Given a URL returns a 303 (See Other)  redirecting to that URL. Returns a 400 (Bad Request) . 'Returns a 401 (Authorization Required)  requiring basic $ authentication in the given realm. Returns a 403 (Forbidden) . Returns a 404 (Not Found) . Returns a 500 (Server Error) .     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  and , which allow the Asimple construction of complex routing rules using either lists () 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  #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 ( monad, routes have all the power of an  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  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  , otherwise .  In general, s are data-dependant (on the  ), but don't have to be. For example,  is an instance of  that always  returns a :  ' instance Routeable Application where 1 runRoute app req = app req >>= return . Just  Converts any  into an  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 . The route only successeds on  exact matches. ?Matches if the path is empty. Note that this route checks that  I is empty, so it works as expected when nested under namespaces or other  routes that pop the  list. )Matches on the HTTP request method (e.g. , , ) 3Routes the given URL pattern. Patterns can include 9 directories as well as variable patterns (prefixed with :) to be added  to  (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  but and  adds a parameter to * where the key is the first parameter and 4 the value is the directory consumed from the path.      None A  is a - monad that contains the HTTP request in its  environment. A  is  simply by running the . Reads the underlying  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 . *Looks up the parameter name in the request's query string and returns the  value as a  or . .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 ,  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  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  Parameter name     None!An ! authenticates a " and, if successful, forwards the   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  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*+,-./0123456789:;*+,-./0123456789:;+,-./0123*4596:;78*+,-./0123456789:; Safe-Inferred<Version Migration name =<=<=<=None  None!>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\FGHIJEKLMNOPQR?DCBA@STUV>WXYZ[\>?DCBA@EFGHIJKLMNOPQRSTUVWXYZ[\ None]^_`]^_`]^_`]^_` Noneabcd#>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\abcdabcdabcdNonee 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. lJBasis type for PostgreSQL-backed data-models. Instances must, at minimum,  implement n, o and p. /Note: the column ordering ! must match that used in the type's implementation of  and / n&Given a model, returns the value of it'#s primary key. In many cases, this / will simply be an alias to a record accessor. o Returns the {7 of the model. Instances should have a top-level value  for the {' that is always returned. For example: ! employees :: TableName Employee # employees = TableName "employees"  ) instance PostgreSQLModel Employee where  ...  tableName _ = employess p1Column names excluding primary key. Column order must match the ordering  used in  and . q%Name of primary key column (default: "id"). r.Column names with primary-key name prepended. tBInserts the model into the database. It relies on the primary key & being autogenerated by the database. uACreate or update the model (uses the primary key to determine if + the model already exists in the database) wBRetrieves the single model corresponding to the given primary key xMFinds the first model in the database based on the column-value contstraint. y"Retrieves all models in the table zJRetrieves all models in the table subject to the column-value constraint. {1Wrapper type representing PostgreSQL table names ~"Converts an HTML form into a type  Unwraps a { efghijklmnopqrstuvwxSearch column name  Search value yzSearch column name  Search value {|}~efghijklmnopqrstuvwxyz{|}~}~lmnopqrstuvwxyzefghijk{|efghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<==>?@ABCDEFGHIJK:LM N O P Q R S T U V V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r stuvwxyz{|}~       simple-0.4.1Database.PostgreSQL.ModelsWeb.Simple.ResponsesWeb.Simple.RouterWeb.Simple.ControllerWeb.Simple.Auth Web.FrankWeb.RESTWeb.Simple.MigrationsDatabase.PostgreSQL.SequelDatabase.PostgreSQL.ConnectionDatabase.PostgreSQL.Migrations Network.WaiFrank Web.Simplebase Data.String fromStringIsStringwai-extra-1.3.4Network.Wai.ParseParamokokHtmlokJsonmovedTo redirectTo badRequestrequireBasicAuth forbiddennotFound serverErrorRoute RouteablerunRoutemkRouterrouteAll routeHostrouteTop routeMethod routePattern routeNamerouteVar Controllerrequest redirectBackredirectBackOr queryParamrespondbody parseForm AuthRouterbasicAuthRouteauthRewriteReq basicAuthgetpostputdeleteoptionsRESTControllerREST restIndexrestShow restCreate restUpdate restDeleterestEditrestNewrestindexcreateeditnewshowupdate Migration newMigration CreateTableColumnConstraint REFERENCESDEFAULT PRIMARY_KEYUNIQUENOT_NULL ColumnTypeSequel runSequel drop_table create_tableserialintegertime timestampvarcharstringtextbooleanstringifyConstraint drop_column add_column rename_columnrunCreateTablecolumnsqlQuery sqlQuery_ sqlExecute sqlExecute_connscreateConnection parseDbURLwithConnectionrunDbdbUpdbDowninitDbHasMany foreignKey childrenOfchildOf childOfBy childrenOfBy insertForPostgreSQLModel PrimaryKey primaryKey tableNamecolumnsprimaryKeyNamecolumns_orderByinsertupsertdestroyfind findFirstfindAll findAllBy TableName FromParams fromParams fromTableName ContentTypebytestring-0.10.0.2Data.ByteString.Internal ByteString wai-1.4.0ResponsemkHtmlResponseGHC.BaseMonad Data.MonoidMonoidRequestresourcet-0.4.7Control.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 requestHeaderFileFileInfo ParseableparseControllerState csRequest parseReadable$fParseableInteger $fParseable[]$fParseableByteString$fRouteableReaderTghc-prim GHC.TypesTrueFalse frankMethodRESTControllerM defaultREST$fRouteableStateT$fRouteableRESTmigrationTemplate$fMonadIOSequel $fMonadSequelpostgresql-simple-0.3.0.1"Database.PostgreSQL.Simple.FromRowFromRow Database.PostgreSQL.Simple.ToRowToRow$fFromParams(,)