Skip to content

Commit daaec93

Browse files
committed
Add complete endpoints for blog crud
1 parent 224bd7a commit daaec93

File tree

1 file changed

+82
-10
lines changed

1 file changed

+82
-10
lines changed

blog/endpoints.py

Lines changed: 82 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,93 @@
1-
from typing import List
1+
from typing import Any, List
22

33
from fastapi import APIRouter
44

5-
from blog import models, schemas
5+
from blog.api_crud import category, post
6+
from blog.schemas import (AllPostList, CategoryOut, CreateCategory, CreatePost,
7+
PostByCategoryList, SinglePost, UpdateCategory,
8+
UpdatePost)
69

710
router = APIRouter()
811

912

10-
@router.post("/posts/", response_model=schemas.Post)
11-
def create_post(post: schemas.PostCreate):
12-
post = models.Post.objects.create(**post.dict())
13+
@router.get("/posts/", response_model=List[AllPostList])
14+
def get_multiple_posts(offset: int = 0, limit: int = 10) -> Any:
15+
"""
16+
Endpoint to get multiple posts based on offset and limit values.
17+
"""
18+
return post.get_multiple(offset=offset, limit=limit)
1319

14-
return post
1520

21+
@router.post("/posts/", status_code=201, response_model=SinglePost)
22+
def create_post(request: CreatePost) -> Any:
23+
"""
24+
Endpoint to create single post.
25+
"""
26+
return post.create(obj_in=request)
1627

17-
@router.get("/posts/", response_model=List[schemas.Post])
18-
def read_posts():
19-
posts = list(models.Post.objects.all())
2028

21-
return posts
29+
@router.post("/tags/", status_code=201, response_model=CategoryOut)
30+
def create_category(request: CreateCategory) -> Any:
31+
"""
32+
Endpoint to create single category.
33+
"""
34+
return category.create(obj_in=request)
35+
36+
37+
@router.get("/tags/", response_model=List[CategoryOut])
38+
def get_multiple_categories(offset: int = 0, limit: int = 10) -> Any:
39+
"""
40+
Get multiple categories.
41+
"""
42+
query = category.get_multiple(limit=limit, offset=offset)
43+
return list(query)
44+
45+
46+
@router.get("/posts/{slug}/", response_model=SinglePost)
47+
def get_post(slug: str) -> Any:
48+
"""
49+
Get single blog post.
50+
"""
51+
return post.get(slug=slug)
52+
53+
54+
@router.get("/tags/{slug}/", response_model=List[PostByCategoryList])
55+
def get_posts_by_category(slug: str) -> Any:
56+
"""
57+
Get all posts belonging to a particular category
58+
"""
59+
query = post.get_posts_by_category(slug=slug)
60+
return list(query)
61+
62+
63+
@router.put("/posts/{slug}/", response_model=SinglePost)
64+
def update_post(slug: str, request: UpdatePost) -> Any:
65+
"""
66+
Update a single blog post.
67+
"""
68+
return post.update(slug=slug, obj_in=request)
69+
70+
71+
@router.put("/tags/{slug}/", response_model=CategoryOut)
72+
def update_category(slug: str, request: UpdateCategory) -> Any:
73+
"""
74+
Update a single blog category.
75+
"""
76+
return category.update(slug=slug, obj_in=request)
77+
78+
79+
@router.delete("/posts/{slug}/")
80+
def delete_post(slug: str) -> Any:
81+
"""
82+
Delete a single blog post.
83+
"""
84+
return post.delete(slug=slug)
85+
86+
87+
@router.delete("/tags/{slug}/", response_model=CategoryOut)
88+
def delete_category(slug: str) -> Any:
89+
"""
90+
Delete a single blog category.
91+
"""
92+
return category.delete(slug=slug)
93+

0 commit comments

Comments
 (0)