@hackage wheb-mongo0.0.2.0

MongoDB plugin for Wheb

Wheb plugin for MongoDB.

  • Implements SessionBackend and AuthBackend instances using MongoDB and Wheb.

  • Creates simple interface for arbitrary MongoDB actions using Wheb

  • Creates simple interface for arbitrary MongoDB actions using mongoDB

For a complete example, see the examples folder at github

You can override the collection names for the Auth and Session documents by using addSetting and setting keys for "session-collection" and "auth-collection"

opts <- generateOptions $ do
   addSetting "session-collection" "my-collection"

Reimplimentation of official example below. Use with language extensions OvererloadedStrings & ExtendedDefaultRules.

 import qualified Data.Text.Lazy as T

 import           Web.Wheb
 import           Web.Wheb.Plugins.Mongo

 data MyApp = MyApp MongoContainer
 data MyRequestState = MyRequestState

 instance MongoApp MyApp where
     getMongoContainer (MyApp mc) = mc

 homePage :: WhebHandler MyApp MyRequestState
 homePage = do
     teams <- runAction $ rest =<< find (select [] "team")
     text $ T.intercalate " | " $ map spack teams

 main :: IO ()
 main = do
   opts <- generateOptions $ do
     addGET "." rootPat $ homePage
     mongo <- initMongo "127.0.0.1:27017" "master"
     return (MyApp mongo, MyRequestState)

   runRawHandler opts $ do
     runAction $ do
         delete (select [] "team")
         insertMany "team" [
             ["name" =: "Yankees", "home" =: ["city" =: "New York", "state" =: "NY"], "league" =: "American"],
             ["name" =: "Mets", "home" =: ["city" =: "New York", "state" =: "NY"], "league" =: "National"],
             ["name" =: "Phillies", "home" =: ["city" =: "Philadelphia", "state" =: "PA"], "league" =: "National"],
             ["name" =: "Red Sox", "home" =: ["city" =: "Boston", "state" =: "MA"], "league" =: "American"] ]

   runWhebServer opts