【发布时间】:2021-09-25 22:16:35
【问题描述】:
我想构建一个简单的出价服务:
- 每个项目可以有多个出价。
- 每个投标都有一个对项目的引用和一个 Int
price字段。
创建新的出价后,我想确认它的价格高于现有的价格。
action CreateBidAction = do
let bid = newRecord @Bid
bid
|> buildBid
|> validateIsPriceAboveOtherBids
>>= ifValid \case
-- ...
validateIsPriceAboveOtherBids bid = do
item <- fetch (get #itemId bid)
let highestBidPrice = gethighestBidPrice (get #bids item)
bid
|> validateField #price (isGreaterThan highestBidPrice)
|> pure
gethighestBidPrice bids = 42
如果我尝试将bids 视为列表:gethighestBidPrice [] = 0
我收到一个错误:
Couldn't match type `[a0]' with `QueryBuilder "bids"'
我的问题是:
- 如果出价为空,如何在
gethighestBidPrice上将默认值设置为 0。 - 如何从出价中找出最高价。
【问题讨论】: