felicity-lims/felicity/apps/storage/services.py

54 lines
2.2 KiB
Python
Raw Normal View History

2024-07-22 16:20:56 +08:00
from felicity.apps.abstract.service import BaseService
from felicity.apps.analysis.entities.analysis import Sample
from felicity.apps.analysis.services.analysis import SampleService
2024-07-28 03:52:31 +08:00
from felicity.apps.storage.entities import (StorageContainer, StorageLocation,
StorageSection, StoreRoom)
from felicity.apps.storage.repository import (StorageContainerRepository,
StorageLocationRepository,
StorageSectionRepository,
StoreRoomRepository)
from felicity.apps.storage.schemas import (StorageContainerCreate,
StorageContainerUpdate,
StorageLocationCreate,
StorageLocationUpdate,
StorageSectionCreate,
StorageSectionUpdate,
StoreRoomCreate, StoreRoomUpdate)
2024-07-21 15:06:51 +08:00
2024-07-24 04:30:01 +08:00
class StoreRoomService(BaseService[StoreRoom, StoreRoomCreate, StoreRoomUpdate]):
2024-07-22 16:20:56 +08:00
def __init__(self):
super().__init__(StoreRoomRepository)
2024-07-21 15:06:51 +08:00
2024-07-28 03:52:31 +08:00
class StorageLocationService(
BaseService[StorageLocation, StorageLocationCreate, StorageLocationUpdate]
):
2024-07-22 16:20:56 +08:00
def __init__(self):
super().__init__(StorageLocationRepository)
2024-07-21 15:06:51 +08:00
2024-07-28 03:52:31 +08:00
class StorageSectionService(
BaseService[StorageSection, StorageSectionCreate, StorageSectionUpdate]
):
2024-07-22 16:20:56 +08:00
def __init__(self):
self.sample_service = SampleService()
super().__init__(StorageSectionRepository)
2024-07-21 15:06:51 +08:00
2024-07-28 03:52:31 +08:00
class StorageContainerService(
BaseService[StorageContainer, StorageContainerCreate, StorageContainerUpdate]
):
2024-07-22 16:20:56 +08:00
def __init__(self):
2024-07-24 04:30:01 +08:00
self.sample_service = SampleService()
2024-07-22 16:20:56 +08:00
super().__init__(StorageContainerRepository)
2024-07-21 15:06:51 +08:00
async def get_samples(self, storage_container_uid: str) -> list[Sample]:
return await self.sample_service.get_all(
storage_container_uid=storage_container_uid
)
2024-07-24 04:30:01 +08:00
async def reset_stored_count(self, uid: str) -> None:
samples = await self.get_samples(uid)
await self.update(uid, {"stored_count": len(samples)})