Разработать расширение для SQLAlchemy
Цена договорная
Требуется человек с глубоким знанием и опытом работы с SQLAlchemy Core+ORM, желательно лазивший по "внутренностям". Необходимо разработать расширение (или вроде того) для данной библиотеки.
Собственно, суть проблемы описана в вопросе на StackOverflow (https://stackoverflow.com/questions/74593533/eager-load-full-chain-of-self-relations-in-sqlalchemy). Но все же повторюсь. Нужно иметь возможность создания для модели отношения на ту же таблицу с рекурсивным eager loading'ом всей цепочки связей. API этого дела я вижу примерно следующим образом:
Base = declarative_base()
class Node(Base):
__tablename__ = 'node'
id = Column(Integer(), primary_key = True)
prev_id = Column(Integer(), ForeignKey(id))
prev = recursive_relationship('Node', uselist = False) # recursive_relationship - ваша функция
Таким образом, откуда бы ни был получен объект Node, у него в обязательном порядке должно быть загружено свойство prev, и свойство prev того prev'а, и т.д., пока prev_id в БД не окажется равен null. Решение не обязательно должно быть универсальным для всех БД, главное - поддержка Postgres. Высокая производительность не принципиальна, хоть и желательна. Если что-то непонятно - обращайтесь, разъясню суть поподробнее.
Также вы можете предложить иную реализацию, если видите проблемы с таким API или так будет сложно и долго делать. Главное - простота применения. А также скорость разработки. Вечер среды - крайний срок. Цена обсуждаема.
Собственно, суть проблемы описана в вопросе на StackOverflow (https://stackoverflow.com/questions/74593533/eager-load-full-chain-of-self-relations-in-sqlalchemy). Но все же повторюсь. Нужно иметь возможность создания для модели отношения на ту же таблицу с рекурсивным eager loading'ом всей цепочки связей. API этого дела я вижу примерно следующим образом:
Base = declarative_base()
class Node(Base):
__tablename__ = 'node'
id = Column(Integer(), primary_key = True)
prev_id = Column(Integer(), ForeignKey(id))
prev = recursive_relationship('Node', uselist = False) # recursive_relationship - ваша функция
Таким образом, откуда бы ни был получен объект Node, у него в обязательном порядке должно быть загружено свойство prev, и свойство prev того prev'а, и т.д., пока prev_id в БД не окажется равен null. Решение не обязательно должно быть универсальным для всех БД, главное - поддержка Postgres. Высокая производительность не принципиальна, хоть и желательна. Если что-то непонятно - обращайтесь, разъясню суть поподробнее.
Также вы можете предложить иную реализацию, если видите проблемы с таким API или так будет сложно и долго делать. Главное - простота применения. А также скорость разработки. Вечер среды - крайний срок. Цена обсуждаема.
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.