from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.api.company_list.schemas import CompanyListCreat, CompanyListResponse, CompanyListUpdate, VesselResponse
from app.api.company_list.service import CompanyService
from app.database.main.mysql import get_db
from app.dependency.authantication import JWTManager

company_list_router = APIRouter()

@company_list_router.post("/company_list_router", response_model_exclude_none=True)
async def create_comapany(request: CompanyListCreat,db: Session = Depends(get_db),token: dict = Depends(JWTManager.verify_token)):
    return await CompanyService(db, token).create_company(request)

@company_list_router.get("/company_list/{company_id}",response_model=CompanyListResponse,response_model_exclude_none=True)
async def get_company(company_id: int,db: Session = Depends(get_db),token: dict = Depends(JWTManager.verify_token)):
    return await CompanyService(db, token).get_company(company_id)

@company_list_router.get("/company/{company_id}/vessels",response_model=list[VesselResponse],response_model_exclude_none=True)
async def get_company_vessels(company_id: int,db: Session = Depends(get_db),token: dict = Depends(JWTManager.verify_token)):
    return await CompanyService(db, token).get_company_vessels(company_id)

@company_list_router.put("/company_list_router/update", response_model_exclude_none=True)
async def update_company(request: CompanyListUpdate,db: Session = Depends(get_db),token: dict = Depends(JWTManager.verify_token)):
    return await CompanyService(db, token).update_company(request)

@company_list_router.get("/companies", response_model=list[CompanyListResponse], response_model_exclude_none=True)
async def get_all_companies(db: Session = Depends(get_db),token: dict = Depends(JWTManager.verify_token)):
    return await CompanyService(db, token).get_all_companies()
