from sqlmodel import Session, select import src.models as models def get_all(session: Session, names: list[str], types: list[str]) -> list[models.ProductorPublic]: statement = select(models.Productor) if len(names) > 0: statement = statement.where(models.Productor.name.in_(names)) if len(types) > 0: statement = statement.where(models.Productor.type.in_(types)) return session.exec(statement).all() def get_one(session: Session, productor_id: int) -> models.ProductorPublic: return session.get(models.Productor, productor_id) def create_one(session: Session, productor: models.ProductorCreate) -> models.ProductorPublic: productor_create = productor.model_dump(exclude_unset=True) new_productor = models.Productor(**productor_create) session.add(new_productor) session.commit() session.refresh(new_productor) return new_productor def update_one(session: Session, id: int, productor: models.ProductorUpdate) -> models.ProductorPublic: statement = select(models.Productor).where(models.Productor.id == id) result = session.exec(statement) new_productor = result.first() if not new_productor: return None productor_updates = productor.model_dump(exclude_unset=True) for key, value in productor_updates.items(): setattr(new_productor, key, value) session.add(new_productor) session.commit() session.refresh(new_productor) return new_productor def delete_one(session: Session, id: int) -> models.ProductorPublic: statement = select(models.Productor).where(models.Productor.id == id) result = session.exec(statement) productor = result.first() if not productor: return None result = models.ProductorPublic.model_validate(productor) session.delete(productor) session.commit() return result