gpt4 book ai didi

sql - Haskell 对日期的持久查询 (Yesod)

转载 作者:行者123 更新时间:2023-12-01 06:05:20 24 4
gpt4 key购买 nike

我正在尝试将日期部分添加到博客文章的 URL 中,可以说

/blog/2016/11/23/my-blog-post-slug

我不仅要检查 slug,还要检查日期部分。这是我到目前为止得到的:
getBlogPostR :: Int -> Int -> Int -> Slug -> Handler Html
getBlogPostR pathYear pathMonth pathDay pathSlug = do
Entity _ BlogPost {..} <- runDB $ getBy404 $ UniqueBlogPostSlug pathSlug
let (year, month, day) = toGregorian $ utctDay blogPostCreatedAt
if (fromIntegral year /= pathYear && month /= pathMonth && day /= pathDay)
then notFound
else
defaultLayout $ do
setTitleI blogPostTitle
$(widgetFile "blog/post")

好像有点笨重。有没有办法将这一年、月、日部分添加为查询过滤参数? (我知道我可以执行原始查询,但这不是我要找的)

[附加信息]

我的模型定义如下:
BlogPost
uuid Text
title Text
slug Text
markdownContent Text
createdAt UTCTime
UniqueBlogPostUuid uuid
UniqueBlogPostSlug slug
Primary uuid

最佳答案

getBlogPostR :: Slug -> Handler Html
getBlogPostR pathSlug = do
Entity _ BlogPost {..} <- runDB $ getBy404 $ UniqueBlogPostSlug pathSlug
mYear <- lookupGetParam "year"
mMonth <- lookupGetParam "month"
mDay <- lookupGetParam "day"
case (,,) <$> mYear <*> mMonth <*> mDay of
Just (queryYear, queryMonth, queryDay) -> do
let (year, month, day) = toGregorian $ utctDay blogPostCreatedAt
if (fromIntegral year /= queryYear && month /= queryMonth && day /= queryDay)
then notFound
else
defaultLayout $ do
setTitleI blogPostTitle
$(widgetFile "blog/post")
Nothing -> notFound

关于sql - Haskell 对日期的持久查询 (Yesod),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40766755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com