This commit is contained in:
parent
76d4fc675f
commit
98010ed1bc
|
@ -12,17 +12,28 @@ from services.logger import root_logger as logger
|
||||||
|
|
||||||
def add_topic_stat_columns(q):
|
def add_topic_stat_columns(q):
|
||||||
aliased_shout = aliased(ShoutTopic)
|
aliased_shout = aliased(ShoutTopic)
|
||||||
|
|
||||||
|
# Соединяем таблицу Topic с таблицами ShoutTopic и Shout, используя INNER JOIN
|
||||||
q = (
|
q = (
|
||||||
q.select_from(Topic)
|
q.select_from(Topic)
|
||||||
.outerjoin(
|
.join(
|
||||||
aliased_shout,
|
aliased_shout,
|
||||||
and_(aliased_shout.shout == Shout.id, Shout.deleted_at.is_(None), aliased_shout.topic == Topic.id),
|
aliased_shout.topic == Topic.id,
|
||||||
|
)
|
||||||
|
.join(
|
||||||
|
Shout,
|
||||||
|
and_(
|
||||||
|
aliased_shout.shout == Shout.id,
|
||||||
|
Shout.deleted_at.is_(None),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
.add_columns(func.count(distinct(aliased_shout.shout)).label("shouts_stat"))
|
.add_columns(func.count(distinct(aliased_shout.shout)).label("shouts_stat"))
|
||||||
)
|
)
|
||||||
|
|
||||||
aliased_follower = aliased(TopicFollower)
|
aliased_follower = aliased(TopicFollower)
|
||||||
q = q.outerjoin(aliased_follower, and_(aliased_follower.topic == Topic.id)).add_columns(
|
|
||||||
|
# Соединяем таблицу Topic с таблицей TopicFollower, используя LEFT OUTER JOIN
|
||||||
|
q = q.outerjoin(aliased_follower, aliased_follower.topic == Topic.id).add_columns(
|
||||||
func.count(distinct(aliased_follower.follower)).label("followers_stat")
|
func.count(distinct(aliased_follower.follower)).label("followers_stat")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -32,18 +43,26 @@ def add_topic_stat_columns(q):
|
||||||
|
|
||||||
|
|
||||||
def add_author_stat_columns(q):
|
def add_author_stat_columns(q):
|
||||||
aliased_shout = aliased(ShoutAuthor)
|
# Соединяем таблицу Author с таблицей ShoutAuthor и таблицей Shout с использованием INNER JOIN
|
||||||
q = (
|
q = (
|
||||||
q.select_from(Author)
|
q.select_from(Author)
|
||||||
.outerjoin(
|
.join(
|
||||||
aliased_shout,
|
ShoutAuthor,
|
||||||
and_(aliased_shout.shout == Shout.id, Shout.deleted_at.is_(None), aliased_shout.author == Author.id),
|
ShoutAuthor.author == Author.id,
|
||||||
)
|
)
|
||||||
.add_columns(func.count(distinct(aliased_shout.shout)).label("shouts_stat"))
|
.join(
|
||||||
|
Shout,
|
||||||
|
and_(
|
||||||
|
Shout.id == ShoutAuthor.shout,
|
||||||
|
Shout.deleted_at.is_(None),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.add_columns(func.count(distinct(Shout.id)).label("shouts_stat"))
|
||||||
)
|
)
|
||||||
aliased_follower = aliased(AuthorFollower)
|
|
||||||
q = q.outerjoin(aliased_follower, aliased_follower.author == Author.id).add_columns(
|
# Соединяем таблицу Author с таблицей AuthorFollower с использованием LEFT OUTER JOIN
|
||||||
func.count(distinct(aliased_follower.follower)).label("followers_stat")
|
q = q.outerjoin(AuthorFollower, AuthorFollower.author == Author.id).add_columns(
|
||||||
|
func.count(distinct(AuthorFollower.follower)).label("followers_stat")
|
||||||
)
|
)
|
||||||
|
|
||||||
q = q.group_by(Author.id)
|
q = q.group_by(Author.id)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user