feat: init trails

This commit is contained in:
swve 2023-11-18 12:22:00 +01:00
parent b04fd64c92
commit eca819b896
5 changed files with 495 additions and 253 deletions

View file

@ -1,56 +1,103 @@
from fastapi import APIRouter, Depends, Request
from src.core.events.database import get_db_session
from src.db.trails import TrailCreate, TrailRead
from src.security.auth import get_current_user
from src.services.trail.trail import Trail, add_activity_to_trail, add_course_to_trail, create_trail, get_user_trail_with_orgslug, get_user_trail, remove_course_from_trail
from src.services.trail.trail import (
Trail,
add_activity_to_trail,
add_course_to_trail,
create_user_trail,
get_user_trails,
get_user_trail_with_orgid,
remove_course_from_trail,
)
router = APIRouter()
@router.post("/start")
async def api_start_trail(request: Request, trail_object: Trail, org_id: str, user=Depends(get_current_user)) -> Trail:
async def api_start_trail(
request: Request,
trail_object: TrailCreate,
user=Depends(get_current_user),
db_session=Depends(get_db_session),
) -> Trail:
"""
Start trail
Start trail
"""
return await create_trail(request, user, org_id, trail_object)
return await create_user_trail(request, user, trail_object, db_session)
@router.get("/org_id/{org_id}/trail")
async def api_get_trail_by_orgid(request: Request, org_slug: str, user=Depends(get_current_user)):
@router.get("/")
async def api_get_user_trail(
request: Request,
user=Depends(get_current_user),
db_session=Depends(get_db_session),
) -> TrailRead:
"""
Get a user trails
"""
return await get_user_trail(request, user=user, org_slug=org_slug)
return await get_user_trails(
request, user=user, db_session=db_session
)
@router.get("/org_slug/{org_slug}/trail")
async def api_get_trail_by_orgslug(request: Request, org_slug: str, user=Depends(get_current_user)):
@router.get("/org_slug/{org_id}/trail")
async def api_get_trail_by_org_id(
request: Request,
org_id: int,
user=Depends(get_current_user),
db_session=Depends(get_db_session),
) -> TrailRead:
"""
Get a user trails using org slug
"""
return await get_user_trail_with_orgslug(request, user, org_slug=org_slug)
return await get_user_trail_with_orgid(
request, user, org_id=org_id, db_session=db_session
)
# Courses in trail
@router.post("/org_slug/{org_slug}/add_course/{course_id}")
async def api_add_course_to_trail(request: Request, course_id: str, org_slug: str, user=Depends(get_current_user)):
@router.post("/add_course/{course_id}")
async def api_add_course_to_trail(
request: Request,
course_id: str,
user=Depends(get_current_user),
db_session=Depends(get_db_session),
) -> TrailRead:
"""
Add Course to trail
"""
return await add_course_to_trail(request, user, org_slug, course_id)
return await add_course_to_trail(request, user, course_id, db_session)
@router.post("/org_slug/{org_slug}/remove_course/{course_id}")
async def api_remove_course_to_trail(request: Request, course_id: str, org_slug: str, user=Depends(get_current_user)):
@router.post("/remove_course/{course_id}")
async def api_remove_course_to_trail(
request: Request,
course_id: str,
user=Depends(get_current_user),
db_session=Depends(get_db_session),
) -> TrailRead:
"""
Remove Course from trail
"""
return await remove_course_from_trail(request, user, org_slug, course_id)
return await remove_course_from_trail(request, user, course_id, db_session)
@router.post("/org_slug/{org_slug}/add_activity/course_id/{course_id}/activity_id/{activity_id}")
async def api_add_activity_to_trail(request: Request, activity_id: str, course_id: str, org_slug: str, user=Depends(get_current_user)):
@router.post("/add_activity/course_id/{course_id}/activity_id/{activity_id}")
async def api_add_activity_to_trail(
request: Request,
activity_id: int,
course_id: int,
user=Depends(get_current_user),
db_session=Depends(get_db_session),
) -> TrailRead:
"""
Add Course to trail
"""
return await add_activity_to_trail(request, user, course_id, org_slug, activity_id)
return await add_activity_to_trail(
request, user, course_id, activity_id, db_session
)