diff --git a/resolvers/zine.py b/resolvers/zine.py index 39d5686d..9b3f73dd 100644 --- a/resolvers/zine.py +++ b/resolvers/zine.py @@ -505,3 +505,20 @@ async def shouts_rated_by_user(_, info, page, size): return { "shouts" : shouts } + +@query.field("userUnpublishedShouts") +@login_required +async def user_unpublished_shouts(_, info, page, size): + user = info.context["request"].user + + with local_session() as session: + shouts = session.query(Shout).\ + join(ShoutAuthor).\ + where(and_(Shout.publishedAt == None, ShoutAuthor.user == user.slug)).\ + order_by(desc(Shout.createdAt)).\ + limit(size).\ + offset( (page - 1) * size) + + return { + "shouts" : shouts + } diff --git a/schema.graphql b/schema.graphql index 2388c4bd..5d91c90a 100644 --- a/schema.graphql +++ b/schema.graphql @@ -147,6 +147,7 @@ type Query { shoutsRatedByUser(page: Int!, size: Int!): ShoutsResult! shoutsCommentedByUser(slug: String!, page: Int!, size: Int!): [Shout]! + userUnpublishedShouts(page: Int!, size: Int!): ShoutsResult! # shouts getShoutBySlug(slug: String!): Shout!