add short product overview
This commit is contained in:
parent
a937fe4775
commit
340ccdc275
4 changed files with 98 additions and 4 deletions
|
@ -32,7 +32,8 @@ type UserAPI =
|
||||||
:> Capture "id" Int :> ReqBody '[JSON] UserDetailsSubmit :> Post '[JSON] ()
|
:> Capture "id" Int :> ReqBody '[JSON] UserDetailsSubmit :> Post '[JSON] ()
|
||||||
)
|
)
|
||||||
:<|> "product" :>
|
:<|> "product" :>
|
||||||
( "list" :> Get '[JSON] [ProductOverview]
|
( "list" :> Get '[JSON] [ProductShortOverview]
|
||||||
|
:<|> "list" :> AuthProtect "header-auth" :> Get '[JSON] [ProductOverview]
|
||||||
:<|> "new" :> AuthProtect "header-auth" :> ReqBody '[JSON] ProductSubmit
|
:<|> "new" :> AuthProtect "header-auth" :> ReqBody '[JSON] ProductSubmit
|
||||||
:> Post '[JSON] Int
|
:> Post '[JSON] Int
|
||||||
:<|> "update" :> AuthProtect "header-auth"
|
:<|> "update" :> AuthProtect "header-auth"
|
||||||
|
|
14
src/Main.hs
14
src/Main.hs
|
@ -149,14 +149,22 @@ users =
|
||||||
}
|
}
|
||||||
|
|
||||||
products =
|
products =
|
||||||
list :<|>
|
listShort :<|>
|
||||||
|
listLong :<|>
|
||||||
new :<|>
|
new :<|>
|
||||||
update
|
update
|
||||||
where
|
where
|
||||||
list :: MateHandler [ProductOverview]
|
listShort :: MateHandler [ProductShortOverview]
|
||||||
list = do
|
listShort = do
|
||||||
|
conn <- rsConnection <$> ask
|
||||||
|
productShortOverviewSelect conn
|
||||||
|
|
||||||
|
listLong :: Maybe Int -> MateHandler [ProductOverview]
|
||||||
|
listLong (Just _) = do
|
||||||
conn <- rsConnection <$> ask
|
conn <- rsConnection <$> ask
|
||||||
productOverviewSelect conn
|
productOverviewSelect conn
|
||||||
|
listLong Nothing =
|
||||||
|
throwError $ err403
|
||||||
|
|
||||||
new :: Maybe Int -> ProductSubmit -> MateHandler Int
|
new :: Maybe Int -> ProductSubmit -> MateHandler Int
|
||||||
new (Just _) bevsub = do
|
new (Just _) bevsub = do
|
||||||
|
|
|
@ -193,6 +193,69 @@ productOverviewSelect conn = do
|
||||||
bevs
|
bevs
|
||||||
|
|
||||||
|
|
||||||
|
productShortOverviewSelect
|
||||||
|
:: PGS.Connection
|
||||||
|
-> MateHandler [ProductShortOverview]
|
||||||
|
productShortOverviewSelect conn = do
|
||||||
|
bevs <- liftIO $ runSelect conn
|
||||||
|
( proc () -> do
|
||||||
|
(i1, i2, i6, i7, i8, i9, i11, i12, i13) <- queryTable productTable -< ()
|
||||||
|
returnA -< (i1, i2, i6, i7, i8, i9, i11, i12, i13)
|
||||||
|
) :: MateHandler
|
||||||
|
[ ( Int
|
||||||
|
, T.Text
|
||||||
|
-- , Int
|
||||||
|
-- , Int
|
||||||
|
-- , Int
|
||||||
|
, Int
|
||||||
|
, Maybe Int
|
||||||
|
, Maybe Int
|
||||||
|
, Int
|
||||||
|
-- , Int
|
||||||
|
, Int
|
||||||
|
, Maybe Int
|
||||||
|
, Maybe T.Text
|
||||||
|
)
|
||||||
|
]
|
||||||
|
mapM
|
||||||
|
(\(i1, i2, {-i3, i4, i5,-} i6, i7, i8, i9, {-i10,-} i11, i12, i13) -> do
|
||||||
|
amounts <- liftIO $ runSelect conn
|
||||||
|
( proc () -> do
|
||||||
|
stuff@(a1, _, _, _, _) <- orderBy (desc (\(_, ts, _, _, _) -> ts))
|
||||||
|
(queryTable amountTable) -< ()
|
||||||
|
restrict -< C.constant i1 .== a1
|
||||||
|
returnA -< stuff
|
||||||
|
) :: MateHandler
|
||||||
|
[ ( Int
|
||||||
|
, UTCTime
|
||||||
|
, Int
|
||||||
|
, Int
|
||||||
|
, Bool
|
||||||
|
)
|
||||||
|
]
|
||||||
|
(i3, i4) <- return $ (\(_, _, y, x, _) -> (x, y)) $ head amounts
|
||||||
|
i5 <- return $ (\(_, x) -> x) $
|
||||||
|
foldl
|
||||||
|
(\(bef, van) (_, _, amo, _, ver) ->
|
||||||
|
if ver
|
||||||
|
then (amo, if amo < bef then van + (bef - amo) else van)
|
||||||
|
else (amo, van)
|
||||||
|
)
|
||||||
|
(0, 0)
|
||||||
|
(Prelude.reverse amounts)
|
||||||
|
i10 <- return $ snd $ foldl (\(bef, tot) (_, _, amo, _, ver) ->
|
||||||
|
if ver
|
||||||
|
then (amo, tot)
|
||||||
|
else (amo, tot + (bef - amo))
|
||||||
|
)
|
||||||
|
(0, 0)
|
||||||
|
(Prelude.reverse amounts)
|
||||||
|
return $ ProductShortOverview
|
||||||
|
i1 i2 i3 i4 i6 i7
|
||||||
|
)
|
||||||
|
bevs
|
||||||
|
|
||||||
|
|
||||||
-- getProductPrice
|
-- getProductPrice
|
||||||
-- :: PurchaseDetail
|
-- :: PurchaseDetail
|
||||||
-- -> PGS.Connection
|
-- -> PGS.Connection
|
||||||
|
|
|
@ -51,6 +51,28 @@ instance ToJSON ProductOverview where
|
||||||
instance FromJSON ProductOverview
|
instance FromJSON ProductOverview
|
||||||
|
|
||||||
|
|
||||||
|
data ProductShortOverview = ProductShortOverview
|
||||||
|
{ productShortOverviewId :: Int
|
||||||
|
, productShortOverviewIdent :: T.Text
|
||||||
|
, productShortOverviewPrice :: Int
|
||||||
|
, productShortOverviewAmount :: Int
|
||||||
|
-- , productShortOverviewVanish :: Int
|
||||||
|
, productShortOverviewMl :: Int
|
||||||
|
, productShortOverviewAvatar :: Maybe Int
|
||||||
|
-- , productShortOverviewSupplier :: Maybe Int
|
||||||
|
-- , productShortOverviewMaxAmount :: Int
|
||||||
|
-- , productShortOverviewTotalBought :: Int
|
||||||
|
-- , productShortOverviewAmountPerCrate :: Int
|
||||||
|
-- , productShortOverviewPricePerCrate :: Maybe Int
|
||||||
|
-- , productShortOverviewArtNr :: Maybe T.Text
|
||||||
|
} deriving (Generic, Show)
|
||||||
|
|
||||||
|
instance ToJSON ProductShortOverview where
|
||||||
|
toEncoding = genericToEncoding defaultOptions
|
||||||
|
|
||||||
|
instance FromJSON ProductShortOverview
|
||||||
|
|
||||||
|
|
||||||
data ProductSubmit = ProductSubmit
|
data ProductSubmit = ProductSubmit
|
||||||
{ productSubmitIdent :: T.Text
|
{ productSubmitIdent :: T.Text
|
||||||
, productSubmitPrice :: Int
|
, productSubmitPrice :: Int
|
||||||
|
|
Loading…
Reference in a new issue