import re from typing import List, Optional from fastapi import APIRouter, HTTPException, status from sqlalchemy import select from src.auth.service import CurrentUser from src.database.core import DbSession from src.database.service import CommonParameters from src.models import StandardResponse from src.overhaul_gantt.model import OverhaulGantt from src.overhaul_gantt.schema import OverhaulGanttIn # from .schema import (OverhaulScheduleCreate, OverhaulSchedulePagination, OverhaulScheduleUpdate) from .service import get_gantt_performance_chart router = APIRouter() @router.get( "", response_model=StandardResponse[dict] ) async def get_gantt_performance(db_session: DbSession): """Get all scope pagination.""" # return query = select(OverhaulGantt).limit(1) data = (await db_session.execute(query)).scalar_one_or_none() results, gantt_data = await get_gantt_performance_chart(spreadsheet_id=data.spreadsheet_id) return StandardResponse( data={ "chart_data": results, "gantt_data": gantt_data }, message="Data retrieved successfully", ) @router.get( "/spreadsheet", response_model=StandardResponse[dict] ) async def get_gantt_spreadsheet(db_session: DbSession): """Get all scope pagination.""" # return query = select(OverhaulGantt).limit(1) data = (await db_session.execute(query)).scalar_one_or_none() result = { "spreadsheet_id": None, "spreadsheet_link": None } if data: result = { "spreadsheet_id": data.spreadsheet_id, "spreadsheet_link": data.spreadsheet_link } return StandardResponse( data=result, message="Data retrieved successfully", ) @router.post( "/spreadsheet", response_model=StandardResponse[dict] ) async def update_gantt_spreadsheet(db_session: DbSession, spreadsheet_in: OverhaulGanttIn): """Get all scope pagination.""" # return match = re.search(r"/d/([a-zA-Z0-9-_]+)", spreadsheet_in.spreadsheet_link) if not match: raise ValueError("Invalid Google Sheets URL") spreadsheet_id = match.group(1) query = select(OverhaulGantt).limit(1) data = (await db_session.execute(query)).scalar_one_or_none() if data: data.spreadsheet_link = spreadsheet_in.spreadsheet_link data.spreadsheet_id = spreadsheet_id else: spreadsheet = OverhaulGantt( spreadsheet_id=spreadsheet_id, spreadsheet_link=spreadsheet_in.spreadsheet_link ) # db_session.add(spreadsheet) # await db_session.commit() if data: result = { "spreadsheet_id": spreadsheet_id } return StandardResponse( data=result, message="Data retrieved successfully", ) # @router.post("", response_model=StandardResponse[None]) # async def create_overhaul_equipment_jobs( # db_session: DbSession, overhaul_job_in: OverhaulScheduleCreate # ): # await create( # db_session=db_session, # overhaul_job_in=overhaul_job_in, # ) # return StandardResponse( # data=None, # message="Data created successfully", # ) # @router.put("/{overhaul_job_id}", response_model=StandardResponse[None]) # async def update_overhaul_schedule( # db_session: DbSession, overhaul_job_id: str, overhaul_job_in: OverhaulScheduleUpdate # ): # await update(db_session=db_session, overhaul_schedule_id=overhaul_job_id, overhaul_job_in=overhaul_job_in) # return StandardResponse( # data=None, # message="Data updated successfully", # ) # @router.delete("/{overhaul_job_id}", response_model=StandardResponse[None]) # async def delete_overhaul_equipment_job(db_session: DbSession, overhaul_job_id): # await delete(db_session=db_session, overhaul_schedule_id=overhaul_job_id) # return StandardResponse( # data=None, # message="Data deleted successfully", # )