Improve teh securty of teh DB
This commit is contained in:
@@ -1386,4 +1386,146 @@ class ProductionService:
|
||||
except Exception as e:
|
||||
logger.error("Error getting batch with transformations",
|
||||
error=str(e), batch_id=str(batch_id), tenant_id=str(tenant_id))
|
||||
return {}
|
||||
return {}
|
||||
|
||||
# ================================================================
|
||||
# EQUIPMENT MANAGEMENT METHODS
|
||||
# ================================================================
|
||||
|
||||
async def get_equipment_list(
|
||||
self,
|
||||
tenant_id: UUID,
|
||||
filters: Dict[str, Any],
|
||||
page: int = 1,
|
||||
page_size: int = 50
|
||||
) -> Dict[str, Any]:
|
||||
"""Get list of equipment with filtering and pagination"""
|
||||
try:
|
||||
async with self.database_manager.get_session() as session:
|
||||
from app.repositories.equipment_repository import EquipmentRepository
|
||||
equipment_repo = EquipmentRepository(session)
|
||||
|
||||
# Apply filters
|
||||
filter_dict = {k: v for k, v in filters.items() if v is not None}
|
||||
filter_dict["tenant_id"] = str(tenant_id)
|
||||
|
||||
# Get equipment with pagination
|
||||
equipment_list = await equipment_repo.get_equipment_filtered(filter_dict, page, page_size)
|
||||
total_count = await equipment_repo.count_equipment_filtered(filter_dict)
|
||||
|
||||
# Convert to response format
|
||||
from app.schemas.equipment import EquipmentResponse
|
||||
equipment_responses = [
|
||||
EquipmentResponse.model_validate(eq) for eq in equipment_list
|
||||
]
|
||||
|
||||
return {
|
||||
"equipment": equipment_responses,
|
||||
"total_count": total_count,
|
||||
"page": page,
|
||||
"page_size": page_size
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Error getting equipment list",
|
||||
error=str(e), tenant_id=str(tenant_id))
|
||||
raise
|
||||
|
||||
async def get_equipment(self, tenant_id: UUID, equipment_id: UUID):
|
||||
"""Get a specific equipment item"""
|
||||
try:
|
||||
async with self.database_manager.get_session() as session:
|
||||
from app.repositories.equipment_repository import EquipmentRepository
|
||||
equipment_repo = EquipmentRepository(session)
|
||||
|
||||
equipment = await equipment_repo.get_equipment_by_id(tenant_id, equipment_id)
|
||||
|
||||
if not equipment:
|
||||
return None
|
||||
|
||||
logger.info("Retrieved equipment",
|
||||
equipment_id=str(equipment_id), tenant_id=str(tenant_id))
|
||||
|
||||
return equipment
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Error getting equipment",
|
||||
error=str(e), equipment_id=str(equipment_id), tenant_id=str(tenant_id))
|
||||
raise
|
||||
|
||||
async def create_equipment(self, tenant_id: UUID, equipment_data):
|
||||
"""Create a new equipment item"""
|
||||
try:
|
||||
async with self.database_manager.get_session() as session:
|
||||
from app.repositories.equipment_repository import EquipmentRepository
|
||||
equipment_repo = EquipmentRepository(session)
|
||||
|
||||
# Prepare equipment data
|
||||
equipment_dict = equipment_data.model_dump()
|
||||
equipment_dict["tenant_id"] = tenant_id
|
||||
|
||||
# Create equipment
|
||||
equipment = await equipment_repo.create_equipment(equipment_dict)
|
||||
|
||||
logger.info("Created equipment",
|
||||
equipment_id=str(equipment.id), tenant_id=str(tenant_id))
|
||||
|
||||
return equipment
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Error creating equipment",
|
||||
error=str(e), tenant_id=str(tenant_id))
|
||||
raise
|
||||
|
||||
async def update_equipment(self, tenant_id: UUID, equipment_id: UUID, equipment_update):
|
||||
"""Update an equipment item"""
|
||||
try:
|
||||
async with self.database_manager.get_session() as session:
|
||||
from app.repositories.equipment_repository import EquipmentRepository
|
||||
equipment_repo = EquipmentRepository(session)
|
||||
|
||||
# First verify equipment belongs to tenant
|
||||
equipment = await equipment_repo.get_equipment_by_id(tenant_id, equipment_id)
|
||||
if not equipment:
|
||||
return None
|
||||
|
||||
# Update equipment
|
||||
updated_equipment = await equipment_repo.update_equipment(
|
||||
equipment_id,
|
||||
equipment_update.model_dump(exclude_none=True)
|
||||
)
|
||||
|
||||
logger.info("Updated equipment",
|
||||
equipment_id=str(equipment_id), tenant_id=str(tenant_id))
|
||||
|
||||
return updated_equipment
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Error updating equipment",
|
||||
error=str(e), equipment_id=str(equipment_id), tenant_id=str(tenant_id))
|
||||
raise
|
||||
|
||||
async def delete_equipment(self, tenant_id: UUID, equipment_id: UUID) -> bool:
|
||||
"""Delete (soft delete) an equipment item"""
|
||||
try:
|
||||
async with self.database_manager.get_session() as session:
|
||||
from app.repositories.equipment_repository import EquipmentRepository
|
||||
equipment_repo = EquipmentRepository(session)
|
||||
|
||||
# First verify equipment belongs to tenant
|
||||
equipment = await equipment_repo.get_equipment_by_id(tenant_id, equipment_id)
|
||||
if not equipment:
|
||||
return False
|
||||
|
||||
# Soft delete equipment
|
||||
success = await equipment_repo.delete_equipment(equipment_id)
|
||||
|
||||
logger.info("Deleted equipment",
|
||||
equipment_id=str(equipment_id), tenant_id=str(tenant_id))
|
||||
|
||||
return success
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Error deleting equipment",
|
||||
error=str(e), equipment_id=str(equipment_id), tenant_id=str(tenant_id))
|
||||
raise
|
||||
Reference in New Issue
Block a user