@@ -21,6 +21,7 @@ async def post_list(
21
21
order : OrderChoices = OrderChoices .ascending ,
22
22
page : int = Query (1 , gt = 0 ),
23
23
page_items : int = Query (2 , gt = 0 ),
24
+ tag : str | None = Query (None ),
24
25
hx_request : str | None = Header (None )
25
26
):
26
27
posts = []
@@ -46,6 +47,11 @@ def getPost(post_id: int):
46
47
except ValueError :
47
48
pass
48
49
50
+ if tag in taglist :
51
+ posts = [post for post in posts if post .get ("tags" ) and tag in post ["tags" ]]
52
+ elif tag is not None :
53
+ raise HTTPException (status_code = 400 , detail = f"The tag [{ tag } ] does not exist." )
54
+
49
55
posts = sortPosts (posts , sort , order )
50
56
51
57
# Simple pagination
@@ -59,14 +65,20 @@ def getPost(post_id: int):
59
65
# next and previous pages
60
66
pagination = {}
61
67
if page > 1 :
62
- pagination ["prev" ] = f"/posts?sort={ sort .value } &order={ order .value } &page={ page - 1 } &page_items={ page_items } "
68
+ pagination ["prev" ] = (
69
+ f"/posts?sort={ sort .value } &order={ order .value } "
70
+ f"&page={ page - 1 } &page_items={ page_items } &tag={ tag } "
71
+ )
63
72
else :
64
73
pagination ["prev" ] = None
65
74
66
75
if end_index >= len (posts ):
67
76
pagination ["next" ] = None
68
77
else :
69
- pagination ["next" ] = f"/posts?sort={ sort .value } &order={ order .value } &page={ page + 1 } &page_items={ page_items } "
78
+ pagination ["next" ] = (
79
+ f"/posts?sort={ sort .value } &order={ order .value } "
80
+ f"&page={ page + 1 } &page_items={ page_items } &tag={ tag } "
81
+ )
70
82
71
83
# Total pages
72
84
if len (posts ) <= page_items :
0 commit comments