def add(session: FileOperator, name: str, device: str, hardware: str, quality: str, grade: str, grade_reference: str, type: str, customer: str, is_enabled=True): # existing_products = Product.get_all(session) # if name in existing_products: # raise KeyError(f"product '{name}' already exists") product = { "name": name, "device": device, "hardware": hardware, "is_enabled": is_enabled, "grade": grade, "quality": quality, "grade_reference": grade_reference, "type": type, "customer": customer } session.query(Types.Product()) session.add(product) session.commit()
def get_all_for_hardware(session: FileOperator, hardware: str) -> list: return session.query(Types.Product())\ .filter(lambda Product: Product.hardware == hardware)\ .all()
def remove(session: FileOperator, name: str): session.query(Types.Product())\ .filter(lambda Product: Product.name == name)\ .delete() session.commit()
def get_for_device(session: FileOperator, device_name: str) -> list: return session.query(Types.Product())\ .filter(lambda Product: Product.device == device_name)\ .all()
def update_state(session: FileOperator, name: str, state: bool): product = session.query(Types.Product())\ .filter(lambda Product: Product.name == name)\ .one() product.is_enabled = state session.commit()
def get(session: FileOperator, name: str) -> DBObject: return session.query(Types.Product())\ .filter(lambda Product: Product.name == name)\ .one_or_none()
def get_all(session: FileOperator) -> list: return session.query(Types.Product()).all()