return user ratings; add getUsersBySlugs

This commit is contained in:
knst-kotov
2021-12-11 19:38:54 +03:00
parent d578072563
commit e8780cfb86
4 changed files with 12 additions and 29 deletions

View File

@@ -7,31 +7,19 @@ from sqlalchemy import func
from sqlalchemy.orm import selectinload
import asyncio
@query.field("getUserBySlug") # get a public profile
async def get_user_by_slug(_, info, slug):
with local_session() as session:
row = session.query(User, func.sum(UserRating.value).label("rating")).\
where(User.slug == slug).\
join(UserRating, UserRating.user_id == User.id).\
group_by(User.id).\
first()
user = row.User
user["rating"] = row.rating
return { "user": user } # TODO: remove some fields for public
@query.field("getCurrentUser")
@login_required
async def get_current_user(_, info):
user = info.context["request"].user
return { "user": user }
@query.field("authorsBySlugs")
@login_required
async def authors_by_slugs(_, info, slugs):
user = info.context["request"].user
@query.field("getUsersBySlugs")
async def get_users_by_slugs(_, info, slugs):
with local_session() as session:
users = session.query(User).where(User.slug in slugs)
return { "authors": users }
users = session.query(User).\
options(selectinload(User.ratings)).\
filter(User.slug.in_(slugs)).all()
return users
@query.field("getUserRoles")
async def get_user_roles(_, info, slug):