+pSpace = do
+ space
+ return (Text " ")
+
+pEol = char '\n' <|> do
+ char '\r'
+ char '\n'
+
+pLinkLong = do
+ string "[["
+ l <- many1 $ noneOf ['|']
+ char '|'
+ d <- many1 $ noneOf "]"
+ string "]]"
+ return (Link l d)
+pLink = do
+ string "[["
+ l <- many1 $ noneOf "]"
+ string "]]"
+ return (Link l l)
+pOtherChar = do
+ c <- oneOf ",;.:!?[]()\'\"=-%$£<>/\\|"
+ return (Text (c:[]))
+
+pText = do
+ t <- many1 alphaNum--(noneOf ['\n','\r','[',']'])
+ return (Text t)
+
+
+newtype PGB = PGB DBService
+
+createPGB :: String -> String -> String -> String -> IO PGB
+createPGB host database user password = let db = createDBService host database "" user password Nothing in return (PGB db)
+
+
+testDB = createPGB "wave" "wiki" "wiki" "12wiki34db"
+
+instance Backend PGB where
+
+ getCurrent (PGB db) key = do
+ result <- selectReturnTuples db $ "SELECT fulltext,timestamp FROM curtexts WHERE keyword="++tov key
+ case result of
+ [text,date]:_ -> return (Just (text,date))
+ _ -> return Nothing
+
+ getList (PGB db) key = do
+ list <- selectReturnTuples db $ "SELECT id, timestamp, author, comment from fulltexts WHERE keyword = "++tov key
+ return $ map (\[id,date,author,comment] -> (id,date,author,comment)) list