You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
3.7 KiB
Python

from typing import Annotated, Optional
from fastapi import APIRouter, HTTPException, status, Query
from src.manpower_cost.model import ManpowerCost
from src.manpower_cost.schema import ManpowerCostPagination, ManpowerCostRead, ManpowerCostCreate, ManpowerCostUpdate, QueryParams
from src.manpower_cost.service import get, get_all, create, update, delete
from src.database.service import CommonParameters, search_filter_sort_paginate
from src.database.core import DbSession
from src.auth.service import CurrentUser
from src.models import StandardResponse
router = APIRouter()
@router.get("", response_model=StandardResponse[ManpowerCostPagination])
async def get_yeardatas(
db_session: DbSession,
common: CommonParameters,
params: Annotated[QueryParams, Query()],
):
"""Get all acquisition_cost_data pagination."""
get_acquisition_cost_data = await get_all(
db_session=db_session,
items_per_page=params.items_per_page,
search=params.search,
common=common,
)
# return
return StandardResponse(
data=get_acquisition_cost_data,
message="Data retrieved successfully",
)
@router.get("/{acquisition_cost_data_id}", response_model=StandardResponse[ManpowerCostRead])
async def get_acquisition_cost_data(db_session: DbSession, acquisition_cost_data_id: str):
acquisition_cost_data = await get(db_session=db_session, acquisition_cost_data_id=acquisition_cost_data_id)
if not acquisition_cost_data:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="A data with this id does not exist.",
)
return StandardResponse(data=acquisition_cost_data, message="Data retrieved successfully")
@router.post("", response_model=StandardResponse[ManpowerCostRead])
async def create_acquisition_cost_data(
db_session: DbSession, acquisition_cost_data_in: ManpowerCostCreate, current_user: CurrentUser
):
acquisition_cost_data_in.created_by = current_user.name
acquisition_cost_data = await create(db_session=db_session, acquisition_data_in=acquisition_cost_data_in)
return StandardResponse(data=acquisition_cost_data, message="Data created successfully")
@router.put("/{acquisition_cost_data_id}", response_model=StandardResponse[ManpowerCostRead])
async def update_acquisition_cost_data(
db_session: DbSession,
acquisition_cost_data_id: str,
acquisition_cost_data_in: ManpowerCostUpdate,
current_user: CurrentUser,
):
acquisition_cost_data = await get(db_session=db_session, acquisition_cost_data_id=acquisition_cost_data_id)
if not acquisition_cost_data:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="A data with this id does not exist.",
)
acquisition_cost_data_in.updated_by = current_user.name
return StandardResponse(
data=await update(
db_session=db_session, acquisition_data=acquisition_cost_data, acquisition_data_in=acquisition_cost_data_in
),
message="Data updated successfully",
)
@router.delete("/{acquisition_cost_data_id}", response_model=StandardResponse[ManpowerCostRead])
async def delete_acquisition_cost_data(db_session: DbSession, acquisition_cost_data_id: str):
acquisition_cost_data = await get(db_session=db_session, acquisition_cost_data_id=acquisition_cost_data_id)
if not acquisition_cost_data:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=[{"msg": "A data with this id does not exist."}],
)
await delete(db_session=db_session, acquisition_cost_data_id=acquisition_cost_data_id)
return StandardResponse(message="Data deleted successfully", data=acquisition_cost_data)