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.
96 lines
3.1 KiB
Python
96 lines
3.1 KiB
Python
from typing import Optional
|
|
from fastapi import APIRouter, HTTPException, status, Query
|
|
|
|
from .model import Yeardata
|
|
from .schema import YeardataPagination, YeardataRead, YeardataCreate, YeardataUpdate
|
|
from .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[YeardataPagination])
|
|
async def get_yeardatas(
|
|
db_session: DbSession,
|
|
common: CommonParameters,
|
|
items_per_page: Optional[int] = Query(5),
|
|
search: Optional[str] = Query(None),
|
|
):
|
|
"""Get all yeardata pagination."""
|
|
year_data = await get_all(
|
|
db_session=db_session,
|
|
items_per_page=items_per_page,
|
|
search=search,
|
|
common=common,
|
|
)
|
|
# return
|
|
return StandardResponse(
|
|
data=year_data,
|
|
message="Data retrieved successfully",
|
|
)
|
|
|
|
|
|
@router.get("/{yeardata_id}", response_model=StandardResponse[YeardataRead])
|
|
async def get_yeardata(db_session: DbSession, yeardata_id: str):
|
|
yeardata = await get(db_session=db_session, yeardata_id=yeardata_id)
|
|
if not yeardata:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail="A data with this id does not exist.",
|
|
)
|
|
|
|
return StandardResponse(data=yeardata, message="Data retrieved successfully")
|
|
|
|
|
|
@router.post("", response_model=StandardResponse[YeardataRead])
|
|
async def create_yeardata(
|
|
db_session: DbSession, yeardata_in: YeardataCreate, current_user: CurrentUser
|
|
):
|
|
yeardata_in.created_by = current_user.name
|
|
yeardata = await create(db_session=db_session, yeardata_in=yeardata_in)
|
|
|
|
return StandardResponse(data=yeardata, message="Data created successfully")
|
|
|
|
|
|
@router.post("/update/{yeardata_id}", response_model=StandardResponse[YeardataRead])
|
|
async def update_yeardata(
|
|
db_session: DbSession,
|
|
yeardata_id: str,
|
|
yeardata_in: YeardataUpdate,
|
|
current_user: CurrentUser,
|
|
):
|
|
yeardata = await get(db_session=db_session, yeardata_id=yeardata_id)
|
|
|
|
if not yeardata:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail="A data with this id does not exist.",
|
|
)
|
|
yeardata_in.updated_by = current_user.name
|
|
|
|
return StandardResponse(
|
|
data=await update(
|
|
db_session=db_session, yeardata=yeardata, yeardata_in=yeardata_in
|
|
),
|
|
message="Data updated successfully",
|
|
)
|
|
|
|
|
|
@router.post("/delete/{yeardata_id}", response_model=StandardResponse[YeardataRead])
|
|
async def delete_yeardata(db_session: DbSession, yeardata_id: str):
|
|
yeardata = await get(db_session=db_session, yeardata_id=yeardata_id)
|
|
|
|
if not yeardata:
|
|
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, yeardata_id=yeardata_id)
|
|
|
|
return StandardResponse(message="Data deleted successfully", data=yeardata)
|