from typing import List
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.api.carpentry import schema, service
from app.database.main.mysql import get_db
from app.dependency.authantication import JWTPayloadSchema, get_current_student, get_current_user

carpentry_router = APIRouter()

@carpentry_router.post("/carpentry", response_model_exclude_none=True)
async def create_carpentry(request: List[schema.CarpentryCreate], db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_user)):
    return await service.CarpentryService(db,token).create_carpentry(request)

@carpentry_router.get("/get_carpentry", response_model_exclude_none=True)
async def get_carpentry(group_id: int, db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.CarpentryService(db,token).get_carpentry(group_id)

@carpentry_router.get("/get_sum_of_total", response_model_exclude_none=True)
async def get_sum_of_total(group_id: int, db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.CarpentryService(db,token).get_and_sum_carpentry(group_id)

@carpentry_router.put("/update_carpentry", response_model_exclude_none=True)
async def update_carpentry(request: List[schema.CarpentryUpdate], db: Session = Depends(get_db), token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.CarpentryService(db,token).update_carpentry(request)

@carpentry_router.delete("/delete_carpentry", response_model_exclude_none=True)
async def delete_carpentry(carpentry_id:int, db:Session = Depends(get_db), token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.CarpentryService(db,token).delete_carpentry(carpentry_id)