follow-resolver-fix2
Some checks failed
Deploy on push / deploy (push) Failing after 6s

This commit is contained in:
2025-08-30 15:38:39 +03:00
parent dfeadf6a54
commit ecae526d1b

View File

@@ -23,6 +23,17 @@ from storage.schema import mutation, query
from utils.logger import root_logger as logger
def get_entity_field_name(entity_type: str) -> str:
"""Возвращает имя поля для связи с сущностью в модели подписчика"""
entity_field_mapping = {
"author": "following",
"topic": "topic",
"community": "community",
"shout": "shout"
}
return entity_field_mapping[entity_type]
@mutation.field("follow")
@login_required
async def follow(
@@ -88,12 +99,13 @@ async def follow(
logger.debug(f"entity_id: {entity_id}, entity_dict: {entity_dict}")
if entity_id is not None and isinstance(entity_id, int):
entity_field = get_entity_field_name(entity_type)
existing_sub = (
session.query(follower_class)
.where(
follower_class.follower == follower_id, # type: ignore[attr-defined]
follower_class.following == entity_id, # type: ignore[attr-defined]
getattr(follower_class, entity_type) == entity_id, # type: ignore[attr-defined]
getattr(follower_class, entity_field) == entity_id, # type: ignore[attr-defined]
)
.first()
)
@@ -102,7 +114,7 @@ async def follow(
error = "already following"
else:
logger.debug("Добавление новой записи в базу данных")
sub = follower_class(follower=follower_id, **{entity_type: entity_id})
sub = follower_class(follower=follower_id, **{entity_field: entity_id})
logger.debug(f"Создан объект подписки: {sub}")
session.add(sub)
session.commit()
@@ -210,14 +222,14 @@ async def unfollow(
return {"error": f"Cannot get ID for {what.lower()}"}
logger.debug(f"entity_id: {entity_id}")
entity_field = get_entity_field_name(entity_type)
sub = (
session.query(follower_class)
.where(
and_(
follower_class.follower == follower_id, # type: ignore[attr-defined]
follower_class.following == entity_id
if entity_type == "AUTHOR"
else follower_class.topic == entity_id, # type: ignore[attr-defined]
getattr(follower_class, entity_field) == entity_id, # type: ignore[attr-defined]
)
)
.first()