1
0
Fork 0
mirror of https://code.sup39.dev/repos/Wqawg synced 2025-03-20 04:46:22 +09:00

Project page lists project's repos

This commit is contained in:
fr33domlover 2016-05-14 11:36:45 +00:00
parent 4d410cf1f7
commit ee9b40d466
3 changed files with 57 additions and 22 deletions
src/Vervis/Handler

View file

@ -21,23 +21,35 @@ module Vervis.Handler.Project
)
where
import Vervis.Import hiding ((==.))
--import Prelude
import Prelude
import Data.Maybe (fromMaybe)
import Data.Text (Text)
import Database.Persist
import Text.Blaze.Html (Html)
import Yesod.Auth (requireAuth)
import Yesod.Core (defaultLayout)
import Yesod.Core.Handler (redirect, setMessage)
import Yesod.Form.Functions (runFormPost)
import Yesod.Form.Types (FormResult (..))
import Yesod.Persist.Core (runDB, getBy404)
import qualified Database.Esqueleto as E
import Text.Blaze.Html (toHtml)
import Database.Esqueleto
--import Model
--import Yesod.Core (Handler)
import Vervis.Form.Project
import Vervis.Foundation
import Vervis.Model
import Vervis.Model.Repo
import Vervis.Settings
getProjectsR :: Text -> Handler Html
getProjectsR ident = do
projects <- runDB $ select $ from $ \ (sharer, project) -> do
where_ $
sharer ^. SharerIdent ==. val ident &&.
sharer ^. SharerId ==. project ^. ProjectSharer
orderBy [asc $ project ^. ProjectIdent]
return $ project ^. ProjectIdent
projects <- runDB $ E.select $ E.from $ \ (sharer, project) -> do
E.where_ $
sharer E.^. SharerIdent E.==. E.val ident E.&&.
sharer E.^. SharerId E.==. project E.^. ProjectSharer
E.orderBy [E.asc $ project E.^. ProjectIdent]
return $ project E.^. ProjectIdent
defaultLayout $(widgetFile "project/list")
postProjectsR :: Text -> Handler Html
@ -65,9 +77,10 @@ getProjectNewR ident = do
defaultLayout $(widgetFile "project/new")
getProjectR :: Text -> Text -> Handler Html
getProjectR user proj = do
project <- runDB $ do
Entity sid _s <- getBy404 $ UniqueSharerIdent user
Entity _pid p <- getBy404 $ UniqueProject proj sid
return p
getProjectR shar proj = do
(project, repos) <- runDB $ do
Entity sid _s <- getBy404 $ UniqueSharerIdent shar
Entity pid p <- getBy404 $ UniqueProject proj sid
rs <- selectList [RepoProject ==. Just pid] [Asc RepoIdent]
return (p, rs)
defaultLayout $(widgetFile "project/one")