Spaces:
Sleeping
Sleeping
bilalsxadad1231231
commited on
Commit
·
8ebfb48
1
Parent(s):
b82f5a0
Implement trailing slash support for all API endpoints
Browse files
app/api/v1/api.py
CHANGED
@@ -3,6 +3,7 @@ from .endpoints import todos, subtasks, translation
|
|
3 |
|
4 |
api_router = APIRouter()
|
5 |
|
|
|
6 |
api_router.include_router(todos.router, prefix="/todos", tags=["todos"])
|
7 |
api_router.include_router(subtasks.router, prefix="", tags=["subtasks"])
|
8 |
api_router.include_router(translation.router, prefix="/todos", tags=["translation"])
|
|
|
3 |
|
4 |
api_router = APIRouter()
|
5 |
|
6 |
+
# Include routers with trailing slash support
|
7 |
api_router.include_router(todos.router, prefix="/todos", tags=["todos"])
|
8 |
api_router.include_router(subtasks.router, prefix="", tags=["subtasks"])
|
9 |
api_router.include_router(translation.router, prefix="/todos", tags=["translation"])
|
app/api/v1/endpoints/subtasks.py
CHANGED
@@ -8,6 +8,7 @@ from ....services.todo_service import TodoService
|
|
8 |
router = APIRouter()
|
9 |
|
10 |
@router.post("/todos/{todo_id}/generate", response_model=List[Subtask])
|
|
|
11 |
async def generate_subtasks(
|
12 |
todo_id: int,
|
13 |
request: SubtaskGenerateRequest,
|
@@ -34,6 +35,7 @@ async def generate_subtasks(
|
|
34 |
)
|
35 |
|
36 |
@router.get("/todos/{todo_id}/subtasks", response_model=List[Subtask])
|
|
|
37 |
def get_todo_subtasks(todo_id: int, db: Session = Depends(get_db)):
|
38 |
"""Get all subtasks for a todo"""
|
39 |
todo_service = TodoService(db)
|
|
|
8 |
router = APIRouter()
|
9 |
|
10 |
@router.post("/todos/{todo_id}/generate", response_model=List[Subtask])
|
11 |
+
@router.post("/todos/{todo_id}/generate/", response_model=List[Subtask])
|
12 |
async def generate_subtasks(
|
13 |
todo_id: int,
|
14 |
request: SubtaskGenerateRequest,
|
|
|
35 |
)
|
36 |
|
37 |
@router.get("/todos/{todo_id}/subtasks", response_model=List[Subtask])
|
38 |
+
@router.get("/todos/{todo_id}/subtasks/", response_model=List[Subtask])
|
39 |
def get_todo_subtasks(todo_id: int, db: Session = Depends(get_db)):
|
40 |
"""Get all subtasks for a todo"""
|
41 |
todo_service = TodoService(db)
|
app/api/v1/endpoints/todos.py
CHANGED
@@ -8,6 +8,7 @@ from ....services.todo_service import TodoService
|
|
8 |
router = APIRouter()
|
9 |
|
10 |
@router.get("/", response_model=List[TodoWithRelations])
|
|
|
11 |
def get_todos(
|
12 |
skip: int = 0,
|
13 |
limit: int = 100,
|
@@ -30,6 +31,7 @@ def get_todo(todo_id: int, db: Session = Depends(get_db)):
|
|
30 |
return todo
|
31 |
|
32 |
@router.post("/", response_model=TodoWithRelations, status_code=status.HTTP_201_CREATED)
|
|
|
33 |
def create_todo(todo: TodoCreate, db: Session = Depends(get_db)):
|
34 |
"""Create a new todo"""
|
35 |
todo_service = TodoService(db)
|
@@ -63,6 +65,7 @@ def delete_todo(todo_id: int, db: Session = Depends(get_db)):
|
|
63 |
)
|
64 |
|
65 |
@router.patch("/{todo_id}/toggle", response_model=TodoWithRelations)
|
|
|
66 |
def toggle_todo_completion(todo_id: int, db: Session = Depends(get_db)):
|
67 |
"""Toggle todo completion status"""
|
68 |
todo_service = TodoService(db)
|
|
|
8 |
router = APIRouter()
|
9 |
|
10 |
@router.get("/", response_model=List[TodoWithRelations])
|
11 |
+
@router.get("", response_model=List[TodoWithRelations])
|
12 |
def get_todos(
|
13 |
skip: int = 0,
|
14 |
limit: int = 100,
|
|
|
31 |
return todo
|
32 |
|
33 |
@router.post("/", response_model=TodoWithRelations, status_code=status.HTTP_201_CREATED)
|
34 |
+
@router.post("", response_model=TodoWithRelations, status_code=status.HTTP_201_CREATED)
|
35 |
def create_todo(todo: TodoCreate, db: Session = Depends(get_db)):
|
36 |
"""Create a new todo"""
|
37 |
todo_service = TodoService(db)
|
|
|
65 |
)
|
66 |
|
67 |
@router.patch("/{todo_id}/toggle", response_model=TodoWithRelations)
|
68 |
+
@router.patch("/{todo_id}/toggle/", response_model=TodoWithRelations)
|
69 |
def toggle_todo_completion(todo_id: int, db: Session = Depends(get_db)):
|
70 |
"""Toggle todo completion status"""
|
71 |
todo_service = TodoService(db)
|
app/api/v1/endpoints/translation.py
CHANGED
@@ -8,6 +8,7 @@ from ....services.todo_service import TodoService
|
|
8 |
router = APIRouter()
|
9 |
|
10 |
@router.post("/{todo_id}/translate", response_model=Translation)
|
|
|
11 |
async def translate_todo(
|
12 |
todo_id: int,
|
13 |
request: TodoTranslationRequest,
|
@@ -34,6 +35,7 @@ async def translate_todo(
|
|
34 |
)
|
35 |
|
36 |
@router.get("/{todo_id}/translations", response_model=List[Translation])
|
|
|
37 |
def get_todo_translations(todo_id: int, db: Session = Depends(get_db)):
|
38 |
"""Get all translations for a todo"""
|
39 |
todo_service = TodoService(db)
|
@@ -46,6 +48,7 @@ def get_todo_translations(todo_id: int, db: Session = Depends(get_db)):
|
|
46 |
return todo_service.get_todo_translations(todo_id)
|
47 |
|
48 |
@router.post("/translate", response_model=dict)
|
|
|
49 |
async def translate_text(request: TranslationRequest):
|
50 |
"""Translate any text to target language"""
|
51 |
from ....services.translation_service import translation_service
|
|
|
8 |
router = APIRouter()
|
9 |
|
10 |
@router.post("/{todo_id}/translate", response_model=Translation)
|
11 |
+
@router.post("/{todo_id}/translate/", response_model=Translation)
|
12 |
async def translate_todo(
|
13 |
todo_id: int,
|
14 |
request: TodoTranslationRequest,
|
|
|
35 |
)
|
36 |
|
37 |
@router.get("/{todo_id}/translations", response_model=List[Translation])
|
38 |
+
@router.get("/{todo_id}/translations/", response_model=List[Translation])
|
39 |
def get_todo_translations(todo_id: int, db: Session = Depends(get_db)):
|
40 |
"""Get all translations for a todo"""
|
41 |
todo_service = TodoService(db)
|
|
|
48 |
return todo_service.get_todo_translations(todo_id)
|
49 |
|
50 |
@router.post("/translate", response_model=dict)
|
51 |
+
@router.post("/translate/", response_model=dict)
|
52 |
async def translate_text(request: TranslationRequest):
|
53 |
"""Translate any text to target language"""
|
54 |
from ....services.translation_service import translation_service
|