from sqlalchemy import select, delete from sqlalchemy.orm import Session from models.patch import Crops, Records from schemas.patch import CropCreate, CropUpdate def create_crop(db: Session, data: CropCreate) -> bool: crop = Crops(**data.model_dump()) db.add(crop) db.commit() db.refresh(crop) return True def update_crop(db: Session, crop_id: int, data: CropUpdate) -> bool: result = db.execute(select(Crops).where(Crops.id == crop_id)) crop = result.scalar_one_or_none() if not crop: return False for k, v in data.model_dump(exclude_unset=True).items(): setattr(crop, k, v) db.commit() db.refresh(crop) return True def delete_crop(db: Session, crop_id: int) -> bool: result = db.execute(select(Crops).where(Crops.id == crop_id)) crop = result.scalar_one_or_none() if not crop: return False db.execute(delete(Records).where(Records.crop_id == crop_id)) db.delete(crop) db.commit() return True