add new schedule api
parent
00e3e4f4ca
commit
1f918ad2c6
@ -0,0 +1,18 @@
|
||||
from sqlalchemy import (UUID, Column, DateTime, Float, ForeignKey, Integer,
|
||||
String)
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from src.database.core import Base
|
||||
from src.models import DefaultMixin, IdentityMixin, TimeStampMixin
|
||||
|
||||
|
||||
class OverhaulSchedule(Base, DefaultMixin):
|
||||
__tablename__ = "rp_oh_schedule"
|
||||
|
||||
year = Column(Integer, nullable=False)
|
||||
plan_duration = Column(Integer, nullable=True)
|
||||
planned_outage = Column(Integer, nullable=True)
|
||||
actual_outage = Column(Integer, nullable=True)
|
||||
start = Column(DateTime, nullable=True)
|
||||
finish = Column(DateTime, nullable=True)
|
||||
remark = Column(String, nullable=True)
|
||||
@ -0,0 +1,52 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from fastapi import APIRouter, HTTPException, status
|
||||
|
||||
from src.auth.service import CurrentUser
|
||||
from src.database.core import DbSession
|
||||
from src.database.service import CommonParameters
|
||||
from src.models import StandardResponse
|
||||
|
||||
from .schema import (OverhaulScheduleCreate, OverhaulSchedulePagination)
|
||||
from .service import create, get_all
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get(
|
||||
"/", response_model=StandardResponse[OverhaulSchedulePagination]
|
||||
)
|
||||
async def get_schedules(common: CommonParameters):
|
||||
"""Get all scope pagination."""
|
||||
# return
|
||||
results = await get_all(common=common)
|
||||
|
||||
return StandardResponse(
|
||||
data=results,
|
||||
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.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_job_id=overhaul_job_id)
|
||||
|
||||
# return StandardResponse(
|
||||
# data=None,
|
||||
# message="Data deleted successfully",
|
||||
# )
|
||||
@ -0,0 +1,43 @@
|
||||
from datetime import datetime
|
||||
from typing import List, Optional
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from src.models import DefultBase, Pagination
|
||||
from src.overhaul_scope.schema import ScopeRead
|
||||
from src.scope_equipment_job.schema import ScopeEquipmentJobRead
|
||||
from src.job.schema import ActivityMasterRead
|
||||
|
||||
class OverhaulScheduleBase(DefultBase):
|
||||
pass
|
||||
|
||||
|
||||
class OverhaulScheduleCreate(OverhaulScheduleBase):
|
||||
year: int
|
||||
plan_duration: Optional[int] = None
|
||||
planned_outage: Optional[int] = None
|
||||
actual_outage: Optional[int] = None
|
||||
start: datetime
|
||||
finish: datetime
|
||||
remark: Optional[str]
|
||||
|
||||
|
||||
class OverhaulScheduleUpdate(OverhaulScheduleBase):
|
||||
pass
|
||||
|
||||
|
||||
class OverhaulScheduleRead(OverhaulScheduleBase):
|
||||
id: UUID
|
||||
year: int
|
||||
plan_duration: Optional[int] = None
|
||||
planned_outage: Optional[int] = None
|
||||
actual_outage: Optional[int] = None
|
||||
start: datetime
|
||||
finish: datetime
|
||||
remark: Optional[str]
|
||||
|
||||
|
||||
|
||||
class OverhaulSchedulePagination(Pagination):
|
||||
items: List[OverhaulScheduleRead] = []
|
||||
@ -0,0 +1,93 @@
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import HTTPException, status
|
||||
from sqlalchemy import Delete, Select, func
|
||||
from sqlalchemy.orm import selectinload
|
||||
|
||||
from src.auth.service import CurrentUser
|
||||
from src.database.core import DbSession
|
||||
from src.database.service import search_filter_sort_paginate
|
||||
from src.scope_equipment_job.model import ScopeEquipmentJob
|
||||
from src.overhaul_activity.model import OverhaulActivity
|
||||
|
||||
from .model import OverhaulSchedule
|
||||
from .schema import OverhaulScheduleCreate
|
||||
|
||||
|
||||
async def get_all(*, common):
|
||||
"""Returns all documents."""
|
||||
query = Select(OverhaulSchedule).order_by(OverhaulSchedule.start)
|
||||
|
||||
results = await search_filter_sort_paginate(model=query, **common)
|
||||
return results
|
||||
|
||||
|
||||
async def create(
|
||||
*, db_session: DbSession, overhaul_job_in: OverhaulScheduleCreate
|
||||
):
|
||||
schedule = OverhaulSchedule(**overhaul_job_in.model_dump())
|
||||
db_session.add(schedule)
|
||||
await db_session.commit()
|
||||
return schedule
|
||||
|
||||
|
||||
# async def delete(
|
||||
# *,
|
||||
# db_session: DbSession,
|
||||
# overhaul_job_id: str,
|
||||
# ) -> bool:
|
||||
# """
|
||||
# Deletes a scope job and returns success status.
|
||||
|
||||
# Args:
|
||||
# db_session: Database session
|
||||
# scope_job_id: ID of the scope job to delete
|
||||
# user_id: ID of user performing the deletion
|
||||
|
||||
# Returns:
|
||||
# bool: True if deletion was successful, False otherwise
|
||||
|
||||
# Raises:
|
||||
# NotFoundException: If scope job doesn't exist
|
||||
# AuthorizationError: If user lacks delete permission
|
||||
# """
|
||||
# try:
|
||||
# # Check if job exists
|
||||
# scope_job = await db_session.get(OverhaulJob, overhaul_job_id)
|
||||
# if not scope_job:
|
||||
# raise HTTPException(
|
||||
# status_code=status.HTTP_404_NOT_FOUND,
|
||||
# detail="A data with this id does not exist.",
|
||||
# )
|
||||
|
||||
# # Perform deletion
|
||||
# await db_session.delete(scope_job)
|
||||
# await db_session.commit()
|
||||
|
||||
# return True
|
||||
|
||||
# except Exception as e:
|
||||
# await db_session.rollback()
|
||||
# raise
|
||||
|
||||
|
||||
# async def update(*, db_session: DbSession, scope: OverhaulScope, scope_in: ScopeUpdate):
|
||||
# """Updates a document."""
|
||||
# data = scope_in.model_dump()
|
||||
|
||||
# update_data = scope_in.model_dump(exclude_defaults=True)
|
||||
|
||||
# for field in data:
|
||||
# if field in update_data:
|
||||
# setattr(scope, field, update_data[field])
|
||||
|
||||
# await db_session.commit()
|
||||
|
||||
# return scope
|
||||
|
||||
|
||||
# async def delete(*, db_session: DbSession, scope_id: str):
|
||||
# """Deletes a document."""
|
||||
# query = Delete(OverhaulScope).where(OverhaulScope.id == scope_id)
|
||||
# await db_session.execute(query)
|
||||
# await db_session.commit()
|
||||
Loading…
Reference in New Issue