def get_cell_by_position(page_table_id, x0, y0, x1, y1):
    return (
        db.session.query(cell)
        .filter(
            db.and_(cell.page_table_id == page_table_id, cell.x0 == x0, cell.y0 == y0, cell.x1 == x1, cell.y1 == y1)
        )
        .first()
    )
def get_page_table_by_position(page_id, top_pos, left_pos, right_pos, bottom_pos):
    return (
        db.session.query(page_table)
        .filter(
            db.and_(
                page_table.page_id == page_id,
                page_table.top_pos == top_pos,
                page_table.left_pos == left_pos,
                page_table.right_pos == right_pos,
                page_table.bottom_pos == bottom_pos,
            )
        )
        .first()
    )
def delete_workflow_transaction(workflow_transaction_info):
    try:
        db.session.query(workflow_transaction).filter(
            db.and_(
                workflow_transaction.task_id_1 == workflow_transaction_info["task_id_1"],
                workflow_transaction.task_id_2 == workflow_transaction_info["task_id_2"],
                workflow_transaction.task_id_3 == workflow_transaction_info["task_id_3"],
                workflow_transaction.task_id_4 == workflow_transaction_info["task_id_4"],
            )
        ).delete(synchronize_session="fetch")
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        raise e
def get_workflow_transaction(workflow_transaction_info=None):
    if workflow_transaction_info == None:
        return db.session.query(workflow_transaction).all()
    else:
        return (
            db.session.query(workflow_transaction)
            .filter(
                db.and_(
                    workflow_transaction.task_id_1 == workflow_transaction_info["task_id_1"],
                    workflow_transaction.task_id_2 == workflow_transaction_info["task_id_2"],
                    workflow_transaction.task_id_3 == workflow_transaction_info["task_id_3"],
                    workflow_transaction.task_id_4 == workflow_transaction_info["task_id_4"],
                )
            )
            .first()
        )
def get_page_table(book_id, page_id):
    return (
        db.session.query(page_table).filter(db.and_(page_table.book_id == book_id, page_table.page_id == page_id)).all()
    )
def get_page(book_id, page_num):
    return db.session.query(page).filter(db.and_(page.book_id == book_id, page.page_num == str(page_num))).first()