Create Router Routines

Membuat router routines.py

buat file pada directory workout/fastapi/api/routers/routines.py

tambahkan kode berikut pada routines.py

from pydantic import BaseModel
from typing import List, Optional
from fastapi import APIRouter
from sqlalchemy.orm import joinedload
from api.models import Workout, Routine
from api.deps import db_depedency, user_depedency
 
router = APIRouter(
prefix='/routines',
tags=['routines']
)
 
class RoutineBase(BaseModel):
name: str
description: Optional[str] = None
 
class RoutineCreate(RoutineBase):
workouts: List[int] = []
 
@router.get('/')
def get_routines(db: db_depedency, user: user_depedency):
return db.query(Routine).options(joinedload(Routine.workouts)).filter(Routine.user_id == user.get('id')).all()
 
@router.post('/')
def create_routine(db: db_depedency, user: user_depedency, routine: RoutineCreate):
db_routine = Routine(name=routine.name, description=routine.description, user_id=user.get('id'))
for workout_id in routine.workouts:
workout = db.query(Workout).filter(Workout.id == workout_id).first()
if workout:
db_routine.workouts.append(workout)
db.add(db_routine)
db.commit()
db.refresh(db_routine)
db_routines = db.query(Routine).options(joinedload(Routine.workouts)).filter(Routine.id == db_routine.id).first()
return db_routines
 
@router.delete('/')
def delete_routine(db: db_depedency, user: user_depedency, routine_id: int):
db_routine = db.query(Routine).filter(Routine.id == routine_id).first()
if db_routine:
db.delete(db_routine)
db.commit()
return db_routine

Tambahkan ke main.py

kemudian tambahkan routines pada main.py

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
+ from .routers import auth, workouts, routines
 
from .database import Base, engine
 
app = FastAPI()
 
Base.metadata.create_all(bind=engine)
 
app.add_middleware(
CORSMiddleware,
allow_origins=['http://localhost:3000'],
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*'],
)
 
@app.get("/")
def health_check():
return "Health check complete"
 
app.include_router(auth.router)
app.include_router(workouts.router)
+ app.include_router(routines.router)

Komentar

Ada 0 komentar pada episode ini.