diff --git a/src/equipment/__pycache__/router.cpython-311.pyc b/src/equipment/__pycache__/router.cpython-311.pyc index 201d5fb..38447dd 100644 Binary files a/src/equipment/__pycache__/router.cpython-311.pyc and b/src/equipment/__pycache__/router.cpython-311.pyc differ diff --git a/src/equipment/__pycache__/schema.cpython-311.pyc b/src/equipment/__pycache__/schema.cpython-311.pyc index 0bf5024..4177a3a 100644 Binary files a/src/equipment/__pycache__/schema.cpython-311.pyc and b/src/equipment/__pycache__/schema.cpython-311.pyc differ diff --git a/src/equipment/__pycache__/service.cpython-311.pyc b/src/equipment/__pycache__/service.cpython-311.pyc index 1dd10db..a697eb5 100644 Binary files a/src/equipment/__pycache__/service.cpython-311.pyc and b/src/equipment/__pycache__/service.cpython-311.pyc differ diff --git a/src/equipment/router.py b/src/equipment/router.py index def0234..5b773d9 100644 --- a/src/equipment/router.py +++ b/src/equipment/router.py @@ -1,5 +1,5 @@ -from typing import List -from fastapi import APIRouter, HTTPException, status +from typing import List, Optional +from fastapi import APIRouter, HTTPException, status, Query from .model import Equipment, MasterRecords from .schema import EquipmentPagination, EquipmentRead, EquipmentCreate, EquipmentUpdate @@ -14,11 +14,22 @@ router = APIRouter() @router.get("", response_model=StandardResponse[EquipmentPagination]) -async def get_equipments(common: CommonParameters): +async def get_equipments( + db_session: DbSession, + common: CommonParameters, + items_per_page: Optional[int] = Query(5), + search: Optional[str] = Query(None), +): """Get all equipment pagination.""" # return + equipment_datas = await get_all( + db_session=db_session, + items_per_page=items_per_page, + search=search, + common=common, + ) return StandardResponse( - data=await search_filter_sort_paginate(model=Equipment, **common), + data=equipment_datas, message="Data retrieved successfully", ) diff --git a/src/equipment/schema.py b/src/equipment/schema.py index 82cee26..9f20047 100644 --- a/src/equipment/schema.py +++ b/src/equipment/schema.py @@ -81,5 +81,12 @@ class EquipmentRead(DefaultBase): min_seq: Optional[float] = Field(None, nullable=True) +class EquipmentDataMaster(EquipmentBase): + assetnum: Optional[str] = Field(None, nullable=True) + forecasting_target_year: Optional[int] = Field(None, nullable=True) + min_eac_info: Optional[str] = Field(None, nullable=True) + harga_saat_ini: Optional[float] = Field(None, nullable=True) + + class EquipmentPagination(Pagination): - items: List[EquipmentRead] = [] + items: List[EquipmentDataMaster] = [] diff --git a/src/equipment/service.py b/src/equipment/service.py index 9a21174..0faaea0 100644 --- a/src/equipment/service.py +++ b/src/equipment/service.py @@ -1,5 +1,7 @@ -from sqlalchemy import Select, Delete, Float, func +from sqlalchemy import Select, Delete, Float, func, cast, String from sqlalchemy.orm import selectinload + +from src.database.service import search_filter_sort_paginate from .model import Equipment, MasterRecords from ..equipment_master.model import EquipmentMaster from .schema import EquipmentCreate, EquipmentUpdate @@ -55,11 +57,21 @@ async def get( # return result.scalars().all() -async def get_all(*, db_session: DbSession): +async def get_all( + *, db_session: DbSession, items_per_page: int, search: str = None, common +) -> list[Equipment]: """Returns all documents.""" query = Select(Equipment) - result = await db_session.execute(query) - return result.scalars().all() + + if search: + query = query.filter( + cast(Equipment.acquisition_year, String).ilike(f"%{search}%") + | cast(Equipment.assetnum, String).ilike(f"%{search}%") + ) + + common["items_per_page"] = items_per_page + result = await search_filter_sort_paginate(model=query, **common) + return result async def create(*, db_session: DbSession, equipment_in: EquipmentCreate): diff --git a/src/equipment_master/__pycache__/router.cpython-311.pyc b/src/equipment_master/__pycache__/router.cpython-311.pyc index 5f0cfad..41bb61c 100644 Binary files a/src/equipment_master/__pycache__/router.cpython-311.pyc and b/src/equipment_master/__pycache__/router.cpython-311.pyc differ diff --git a/src/masterdata/__pycache__/router.cpython-311.pyc b/src/masterdata/__pycache__/router.cpython-311.pyc index 732685a..2d6a93f 100644 Binary files a/src/masterdata/__pycache__/router.cpython-311.pyc and b/src/masterdata/__pycache__/router.cpython-311.pyc differ diff --git a/src/masterdata/__pycache__/schema.cpython-311.pyc b/src/masterdata/__pycache__/schema.cpython-311.pyc index 8dcfce4..62c253d 100644 Binary files a/src/masterdata/__pycache__/schema.cpython-311.pyc and b/src/masterdata/__pycache__/schema.cpython-311.pyc differ diff --git a/src/masterdata/__pycache__/service.cpython-311.pyc b/src/masterdata/__pycache__/service.cpython-311.pyc index 70611dd..3572a30 100644 Binary files a/src/masterdata/__pycache__/service.cpython-311.pyc and b/src/masterdata/__pycache__/service.cpython-311.pyc differ diff --git a/src/masterdata/router.py b/src/masterdata/router.py index 4b9773c..6307275 100644 --- a/src/masterdata/router.py +++ b/src/masterdata/router.py @@ -1,8 +1,13 @@ - -from fastapi import APIRouter, HTTPException, status +from typing import Optional +from fastapi import APIRouter, HTTPException, status, Query from .model import MasterData -from .schema import MasterDataPagination, MasterDataRead, MasterDataCreate, MasterDataUpdate +from .schema import ( + MasterDataPagination, + MasterDataRead, + MasterDataCreate, + MasterDataUpdate, +) from .service import get, get_all, create, update, delete from src.database.service import CommonParameters, search_filter_sort_paginate @@ -14,11 +19,22 @@ router = APIRouter() @router.get("", response_model=StandardResponse[MasterDataPagination]) -async def get_masterdatas(common: CommonParameters): +async def get_masterdatas( + db_session: DbSession, + common: CommonParameters, + items_per_page: Optional[int] = Query(5), + search: Optional[str] = Query(None), +): """Get all documents.""" # return + master_datas = await get_all( + db_session=db_session, + items_per_page=items_per_page, + search=search, + common=common, + ) return StandardResponse( - data=await search_filter_sort_paginate(model=MasterData, **common), + data=master_datas, message="Data retrieved successfully", ) @@ -36,7 +52,9 @@ async def get_masterdata(db_session: DbSession, masterdata_id: str): @router.post("", response_model=StandardResponse[MasterDataRead]) -async def create_masterdata(db_session: DbSession, masterdata_in: MasterDataCreate, current_user: CurrentUser): +async def create_masterdata( + db_session: DbSession, masterdata_in: MasterDataCreate, current_user: CurrentUser +): masterdata_in.created_by = current_user.name masterdata = await create(db_session=db_session, masterdata_in=masterdata_in) @@ -44,7 +62,12 @@ async def create_masterdata(db_session: DbSession, masterdata_in: MasterDataCrea @router.put("/{masterdata_id}", response_model=StandardResponse[MasterDataRead]) -async def update_masterdata(db_session: DbSession, masterdata_id: str, masterdata_in: MasterDataUpdate, current_user: CurrentUser): +async def update_masterdata( + db_session: DbSession, + masterdata_id: str, + masterdata_in: MasterDataUpdate, + current_user: CurrentUser, +): masterdata = await get(db_session=db_session, masterdata_id=masterdata_id) if not masterdata: @@ -54,7 +77,12 @@ async def update_masterdata(db_session: DbSession, masterdata_id: str, masterdat ) masterdata_in.updated_by = current_user.name - return StandardResponse(data=await update(db_session=db_session, masterdata=masterdata, masterdata_in=masterdata_in), message="Data updated successfully") + return StandardResponse( + data=await update( + db_session=db_session, masterdata=masterdata, masterdata_in=masterdata_in + ), + message="Data updated successfully", + ) @router.delete("/{masterdata_id}", response_model=StandardResponse[MasterDataRead]) diff --git a/src/masterdata/schema.py b/src/masterdata/schema.py index 5f8191b..63c0a13 100644 --- a/src/masterdata/schema.py +++ b/src/masterdata/schema.py @@ -21,7 +21,9 @@ class MasterdataBase(DefaultBase): class MasterDataCreate(MasterdataBase): - pass + name: str = Field(..., nullable=True) + value_num: float= Field(..., nullable=True) + value_str: str = Field(..., nullable=True) class MasterDataUpdate(MasterdataBase): diff --git a/src/masterdata/service.py b/src/masterdata/service.py index caa06a7..4f3e9d4 100644 --- a/src/masterdata/service.py +++ b/src/masterdata/service.py @@ -1,6 +1,6 @@ - - from sqlalchemy import Select, Delete + +from src.database.service import search_filter_sort_paginate from .model import MasterData from .schema import MasterDataCreate, MasterDataUpdate from typing import Optional @@ -16,11 +16,18 @@ async def get(*, db_session: DbSession, masterdata_id: str) -> Optional[MasterDa return result.scalars().one_or_none() -async def get_all(*, db_session: DbSession): +async def get_all( + *, db_session: DbSession, items_per_page: int, search: str = None, common +) -> list[MasterData]: """Returns all documents.""" query = Select(MasterData) - result = await db_session.execute(query) - return result.scalars().all() + + if search: + query = query.filter(MasterData.name.ilike(f"%{search}%")) + + common["items_per_page"] = items_per_page + result = await search_filter_sort_paginate(model=query, **common) + return result async def create(*, db_session: DbSession, masterdata_in: MasterDataCreate): @@ -31,7 +38,9 @@ async def create(*, db_session: DbSession, masterdata_in: MasterDataCreate): return masterdata -async def update(*, db_session: DbSession, masterdata: MasterData, masterdata_in: MasterDataUpdate): +async def update( + *, db_session: DbSession, masterdata: MasterData, masterdata_in: MasterDataUpdate +): """Updates a document.""" data = masterdata_in.model_dump() diff --git a/src/yeardata/__pycache__/router.cpython-311.pyc b/src/yeardata/__pycache__/router.cpython-311.pyc index b711aa2..ed9e1f4 100644 Binary files a/src/yeardata/__pycache__/router.cpython-311.pyc and b/src/yeardata/__pycache__/router.cpython-311.pyc differ diff --git a/src/yeardata/__pycache__/service.cpython-311.pyc b/src/yeardata/__pycache__/service.cpython-311.pyc index a30a625..56b1294 100644 Binary files a/src/yeardata/__pycache__/service.cpython-311.pyc and b/src/yeardata/__pycache__/service.cpython-311.pyc differ diff --git a/src/yeardata/router.py b/src/yeardata/router.py index 2ddf0da..0f838e6 100644 --- a/src/yeardata/router.py +++ b/src/yeardata/router.py @@ -1,5 +1,5 @@ - -from fastapi import APIRouter, HTTPException, status +from typing import Optional +from fastapi import APIRouter, HTTPException, status, Query from .model import Yeardata from .schema import YeardataPagination, YeardataRead, YeardataCreate, YeardataUpdate @@ -14,11 +14,22 @@ router = APIRouter() @router.get("", response_model=StandardResponse[YeardataPagination]) -async def get_yeardatas(common: CommonParameters): +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=await search_filter_sort_paginate(model=Yeardata, **common), + data=year_data, message="Data retrieved successfully", ) @@ -36,7 +47,9 @@ async def get_yeardata(db_session: DbSession, yeardata_id: str): @router.post("", response_model=StandardResponse[YeardataRead]) -async def create_yeardata(db_session: DbSession, yeardata_in: YeardataCreate, current_user: CurrentUser): +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) @@ -44,7 +57,12 @@ async def create_yeardata(db_session: DbSession, yeardata_in: YeardataCreate, cu @router.put("/{yeardata_id}", response_model=StandardResponse[YeardataRead]) -async def update_yeardata(db_session: DbSession, yeardata_id: str, yeardata_in: YeardataUpdate, current_user: CurrentUser): +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: @@ -54,7 +72,12 @@ async def update_yeardata(db_session: DbSession, yeardata_id: str, yeardata_in: ) 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") + return StandardResponse( + data=await update( + db_session=db_session, yeardata=yeardata, yeardata_in=yeardata_in + ), + message="Data updated successfully", + ) @router.delete("/{yeardata_id}", response_model=StandardResponse[YeardataRead]) diff --git a/src/yeardata/service.py b/src/yeardata/service.py index c834806..34147d7 100644 --- a/src/yeardata/service.py +++ b/src/yeardata/service.py @@ -1,8 +1,7 @@ - - -from sqlalchemy import Select, Delete +from sqlalchemy import Select, Delete, cast, String from .model import Yeardata from .schema import YeardataCreate, YeardataUpdate +from src.database.service import search_filter_sort_paginate from typing import Optional from src.database.core import DbSession @@ -16,11 +15,23 @@ async def get(*, db_session: DbSession, yeardata_id: str) -> Optional[Yeardata]: return result.scalars().one_or_none() -async def get_all(*, db_session: DbSession): +async def get_all( + *, + db_session: DbSession, + items_per_page: Optional[int], + search: Optional[str] = None, + common, +): """Returns all documents.""" query = Select(Yeardata) - result = await db_session.execute(query) - return result.scalars().all() + if search: + query = query.filter(cast(Yeardata.year, String).ilike(f"%{search}%")) + + common["items_per_page"] = items_per_page + results = await search_filter_sort_paginate(model=query, **common) + + # return results.scalars().all() + return results async def create(*, db_session: DbSession, yeardata_in: YeardataCreate): @@ -31,7 +42,9 @@ async def create(*, db_session: DbSession, yeardata_in: YeardataCreate): return yeardata -async def update(*, db_session: DbSession, yeardata: Yeardata, yeardata_in: YeardataUpdate): +async def update( + *, db_session: DbSession, yeardata: Yeardata, yeardata_in: YeardataUpdate +): """Updates a document.""" data = yeardata_in.model_dump()