Skip to content

Commit a943e83

Browse files
committed
All filters are optional
1 parent 7ea8c28 commit a943e83

File tree

5 files changed

+36
-37
lines changed

5 files changed

+36
-37
lines changed

spec/Common.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,10 @@ fauxRequester mRecord rqPath rqParams = do
226226
Nothing -> return ()
227227
return $ Right $ WPResponse [(CI.mk "X-WP-TotalPages", "478")] (enc [article1])
228228
where mkUrlUnescape url params =
229-
url <> "?"
230-
<> T.intercalate "&" (map (\(k, v) -> k <> "=" <> v) params)
229+
url <>
230+
if null params
231+
then ""
232+
else "?" <> T.intercalate "&" (map (\(k, v) -> k <> "=" <> v) params)
231233

232234
initializer :: Either UserPassword Requester -> CacheBehavior -> Text -> IO Ctxt
233235
initializer requester cache endpoint =

spec/Main.hs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -334,39 +334,39 @@ queryTests :: Spec
334334
queryTests =
335335
describe "generate queries from <wpPosts>" $ do
336336
"<wpPosts></wpPosts>" `shouldQueryTo`
337-
["/wp/v2/posts?page=1&per_page=20"]
337+
["/wp/v2/posts"]
338338
"<wpPosts orderby=\"title\" order=\"desc\"></wpPosts>" `shouldQueryTo`
339-
["/wp/v2/posts?order=desc&orderby=title&page=1&per_page=20"]
339+
["/wp/v2/posts?order=desc&orderby=title"]
340340
"<wpPosts limit=2></wpPosts>" `shouldQueryTo`
341-
["/wp/v2/posts?page=1&per_page=20"]
341+
["/wp/v2/posts"]
342342
"<wpPosts offset=1 limit=1></wpPosts>" `shouldQueryTo`
343-
["/wp/v2/posts?offset=1&page=1&per_page=20"]
344-
"<wpPosts offset=0&page=1 limit=1></wpPosts>" `shouldQueryTo`
345-
["/wp/v2/posts?offset=0&page=1&per_page=20"]
343+
["/wp/v2/posts?offset=1"]
344+
"<wpPosts offset=0& limit=1></wpPosts>" `shouldQueryTo`
345+
["/wp/v2/posts?offset=0"]
346346
"<wpPosts limit=10 page=1></wpPosts>" `shouldQueryTo`
347-
["/wp/v2/posts?page=1&per_page=20"]
347+
["/wp/v2/posts?page=1"]
348348
"<wpPosts limit=10 page=2></wpPosts>" `shouldQueryTo`
349-
["/wp/v2/posts?page=2&per_page=20"]
349+
["/wp/v2/posts?page=2"]
350350
"<wpPosts num=2></wpPosts>" `shouldQueryTo`
351-
["/wp/v2/posts?page=1&per_page=2"]
351+
["/wp/v2/posts?per_page=2"]
352352
"<wpPosts num=2 page=2></wpPosts>" `shouldQueryTo`
353353
["/wp/v2/posts?page=2&per_page=2"]
354354
"<wpPosts num=1 page=3></wpPosts>" `shouldQueryTo`
355355
["/wp/v2/posts?page=3&per_page=1"]
356356
"<wpPosts tags=\"+home-featured\" limit=10></wpPosts>" `shouldQueryTo`
357-
["/wp/v2/posts?page=1&per_page=20&tags[]=177"]
357+
["/wp/v2/posts?tags[]=177"]
358358
"<wpPosts tags=\"-home-featured\" limit=1></wpPosts>" `shouldQueryTo`
359-
["/wp/v2/posts?page=1&per_page=20&tags_exclude[]=177"]
359+
["/wp/v2/posts?tags_exclude[]=177"]
360360
"<wpPosts tags=\"+home-featured,-featured-global\" limit=1><wpTitle/></wpPosts>" `shouldQueryTo`
361-
["/wp/v2/posts?page=1&per_page=20&tags[]=177&tags_exclude[]=160"]
361+
["/wp/v2/posts?tags[]=177&tags_exclude[]=160"]
362362
"<wpPosts tags=\"+home-featured,+featured-global\" limit=1><wpTitle/></wpPosts>" `shouldQueryTo`
363-
["/wp/v2/posts?page=1&per_page=20&tags[]=160&tags[]=177"]
363+
["/wp/v2/posts?tags[]=160&tags[]=177"]
364364
"<wpPosts categories=\"bookmarx\" limit=10><wpTitle/></wpPosts>" `shouldQueryTo`
365-
["/wp/v2/posts?categories[]=159&page=1&per_page=20"]
365+
["/wp/v2/posts?categories[]=159"]
366366
"<wpPosts categories=\"-bookmarx\" limit=10><wpTitle/></wpPosts>" `shouldQueryTo`
367-
["/wp/v2/posts?categories_exclude[]=159&page=1&per_page=20"]
367+
["/wp/v2/posts?categories_exclude[]=159"]
368368
"<wp><div><wpPosts categories=\"bookmarx\" limit=10><wpTitle/></wpPosts></div></wp>" `shouldQueryTo`
369-
replicate 2 "/wp/v2/posts?categories[]=159&page=1&per_page=20"
369+
replicate 2 "/wp/v2/posts?categories[]=159"
370370
"<wpPage name=blah />" `shouldQueryTo`
371371
["/wp/v2/pages?slug=blah"]
372372

src/Web/Offset/Feed.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ getWPEntries wp = do
7171

7272
allPostsQuery :: WPQuery
7373
allPostsQuery =
74-
WPPostsQuery { qlimit = 20
75-
, qnum = 20
74+
WPPostsQuery { qlimit = Just 20
75+
, qnum = Just 20
7676
, qoffset = Nothing
77-
, qpage = 1
77+
, qpage = Nothing
7878
, qorder = Nothing
7979
, qorderby = Nothing
8080
, qsearch = Nothing

src/Web/Offset/Splices.hs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ postsWithoutDuplicates :: WPLens b s
157157
postsWithoutDuplicates wpLens postsQuery posts = do
158158
wp <- use wpLens
159159
let postsW = extractPostIds posts
160-
return $ take (qlimit postsQuery) . removeDupes (requestPostSet wp) $ postsW
160+
return $ take (fromMaybe 20 $ qlimit postsQuery) . removeDupes (requestPostSet wp) $ postsW
161161
where removeDupes :: Maybe IntSet -> [(Int, Object)] -> [(Int, Object)]
162162
removeDupes Nothing = id
163163
removeDupes (Just wpPostIdSet) =
@@ -192,7 +192,7 @@ wpPostsAggregateFill wp extraFields wpLens = Fill $ \attrs tpl lib ->
192192
addPostIds wpLens (map fst postsND')
193193
unFill (fillChildrenWith $
194194
subs [ ("wpPostsItem", wpPostsHelper wp extraFields (map snd postsND'))
195-
, ("wpPostsMeta", wpAggregateMetaFill res (Just $ qpage postsQuery)) ])
195+
, ("wpPostsMeta", wpAggregateMetaFill res (qpage postsQuery)) ])
196196
mempty tpl lib
197197
Right Nothing -> return ""
198198
Left code -> liftIO $ logStatusCode wp code
@@ -342,10 +342,10 @@ postSubs wp extra object = subs (map (buildSplice object) (mergeFields postField
342342

343343
parseQueryNode :: [(Text, Text)] -> WPQuery
344344
parseQueryNode attrs =
345-
WPPostsQuery { qlimit = fromMaybe 20 $ readLookup "limit" attrs
346-
, qnum = fromMaybe 20 perpage
345+
WPPostsQuery { qlimit = readLookup "limit" attrs
346+
, qnum = perpage
347347
, qoffset = readLookup "offset" attrs
348-
, qpage = fromMaybe 1 $ readLookup "page" attrs
348+
, qpage = readLookup "page" attrs
349349
, qorder = toWPOrdering $ lookup "order" attrs
350350
, qorderby = lookup "orderby" attrs
351351
, qsearch = lookup "search" attrs
@@ -434,18 +434,15 @@ mkWPKey :: [Filter]
434434
-> WPQuery
435435
-> WPKey
436436
mkWPKey taxFilters wppq@WPPostsQuery{..} =
437-
let page = if qpage < 1 then 1 else qpage
438-
in PostsKey (Set.fromList $
439-
[ PageFilter page
440-
, NumFilter qnum ]
441-
++ toFilters wppq
442-
++ taxFilters ++ userFilter quser)
437+
PostsKey (Set.fromList $ toFilters wppq ++ taxFilters ++ userFilter quser)
443438
where userFilter Nothing = []
444439
userFilter (Just u) = [UserFilter u]
445440

446-
441+
toFilters :: WPQuery -> [Filter]
447442
toFilters WPPostsQuery{..} =
448-
catMaybes [ OffsetFilter <$> qoffset
443+
catMaybes [ NumFilter <$> qnum
444+
, PageFilter <$> qpage
445+
, OffsetFilter <$> qoffset
449446
, OrderFilter <$> qorder
450447
, OrderByFilter <$> qorderby
451448
, SearchFilter <$> qsearch

src/Web/Offset/Types.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,10 +239,10 @@ attrToTaxSpecList (k, ts) =
239239
then TaxSpecList k (catMaybes vs)
240240
else TaxSpecList k []
241241

242-
data WPQuery = WPPostsQuery{ qlimit :: Int
243-
, qnum :: Int
242+
data WPQuery = WPPostsQuery{ qlimit :: Maybe Int
243+
, qnum :: Maybe Int
244244
, qoffset :: Maybe Int
245-
, qpage :: Int
245+
, qpage :: Maybe Int
246246
, qorder :: Maybe WPOrdering
247247
, qorderby :: Maybe Text
248248
, qsearch :: Maybe Text

0 commit comments

Comments
 (0)