mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
* wip * finishes initial refactor * prune unused code * finished massive refactor * remove commented deps * fix import * fix bug
34 lines
1.1 KiB
Haskell
34 lines
1.1 KiB
Haskell
module Handler.Package.V0.Info where
|
|
|
|
import Data.Aeson (ToJSON (..))
|
|
import Database.Esqueleto.Experimental (Entity (..), asc, from, orderBy, select, table, (^.))
|
|
import Foundation (Handler, RegistryCtx (..))
|
|
import Model (Category (..), EntityField (..))
|
|
import Settings (AppSettings (..))
|
|
import Startlude (Generic, Show, Text, pure, ($), (.), (<$>))
|
|
import Yesod (ToContent (..), ToTypedContent (..), YesodPersist (runDB), getsYesod)
|
|
import Yesod.Core.Types (JSONResponse (..))
|
|
|
|
|
|
data InfoRes = InfoRes
|
|
{ name :: !Text
|
|
, categories :: ![Text]
|
|
}
|
|
deriving (Show, Generic)
|
|
instance ToJSON InfoRes
|
|
instance ToContent InfoRes where
|
|
toContent = toContent . toJSON
|
|
instance ToTypedContent InfoRes where
|
|
toTypedContent = toTypedContent . toJSON
|
|
|
|
|
|
getInfoR :: Handler (JSONResponse InfoRes)
|
|
getInfoR = do
|
|
name <- getsYesod $ marketplaceName . appSettings
|
|
allCategories <- runDB $
|
|
select $ do
|
|
cats <- from $ table @Category
|
|
orderBy [asc (cats ^. CategoryPriority)]
|
|
pure cats
|
|
pure $ JSONResponse $ InfoRes name $ categoryName . entityVal <$> allCategories
|