Есть запрос в potresql


WITH RECURSIVE ParentPaths AS (
SELECT Id, array[Id] AS ParentPath
FROM topics
WHERE parent = 0
UNION ALL
SELECT t.Id, p.ParentPath || t.Id
FROM topics t
JOIN ParentPaths p ON p.Id = t.parent
)
SELECT
tasks.id,
tasks.task,
tasks.answer,
tasks.level,
array_agg(DISTINCT num) AS ParentPath
FROM
ParentPaths
JOIN
tasks_topics ON tasks_topics.topics_id = ParentPaths.Id
JOIN
tasks ON tasks.id = tasks_topics.task_id

LEFT JOIN LATERAL unnest(ParentPaths.ParentPath) AS num ON true
GROUP BY
tasks.id;



И есть классы во flask

# связующая таблица топики задачи
tasks_topics= db.Table(‘tasks_topics’,
db.Column(‘task_id’, db.Integer, db.ForeignKey(‘tasks.id’)),
db.Column(‘topics_id’, db.Integer, db.ForeignKey(‘topics.id’))
)


class Tasks(db.Model):
tablename = ‘tasks’
searchable = [‘task’,‘id’] # these fields will be indexed by whoosh

id = db.Column(db.Integer, primary_key=True, autoincrement=True)
url = db.Column(db.String(120), comment=“ЧПУ задачи в адресе (транслитом)”)
task = db.Column(db.Text, comment=‘Условие задачи’)
answer = db.Column(db.Text, comment=‘Ответ’)
status = db.Column(db.Boolean, default=0, comment=‘Статус: опубликована/неактивна (по умолчанию нет)’)
created_t = db.Column(db.DateTime, comment=‘Дата и время создания’)
level = db.Column(db.SmallInteger, default=1, comment=‘Уровень сложности: 1,2 … (по умолчанию 1 уровень)’)

# связи
topics = db.relationship(‘Topics’,
secondary=tasks_topics,
back_populates=“tasks”)


class Topics(db.Model):
tablename = ‘topics’
searchable = [‘name’]

id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(140), comment=“Уникальное название темы(подтемы)”)
parent = db.Column(db.Integer, default=0, comment=“ID родительской темы(если есть)”)

# связи
tasks = db.relationship(‘Tasks’,
secondary=tasks_topics,
back_populates=“topics”)


Как переписать запрос в sql alchemy?