return user ratings; add getUsersBySlugs
This commit is contained in:
@@ -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):
|
||||
|
Reference in New Issue
Block a user