Clean up module query

This commit is contained in:
Ramon Wenger 2018-10-01 13:08:20 +02:00
parent 6f9666407c
commit f5e163c3cd
3 changed files with 44 additions and 40 deletions

View File

@ -1,41 +1,37 @@
#import "./fragments/contentBlockParts.gql" #import "./fragments/contentBlockParts.gql"
query ModulesQuery($slug: String!) { query ModulesQuery($slug: String!) {
modules(slug: $slug) { module(slug: $slug) {
edges { id
node { slug
id title
slug metaTitle
title teaser
metaTitle intro
teaser objectiveGroups {
intro edges {
objectiveGroups { node {
edges { id
node { title
id objectiveSet {
title edges {
objectiveSet { node {
edges { id
node { text
id
text
}
}
} }
} }
} }
} }
chapters { }
edges { }
node { chapters {
id edges {
title node {
contentBlocks { id
edges { title
node { contentBlocks {
...ContentBlockParts edges {
} node {
} ...ContentBlockParts
} }
} }
} }

View File

@ -20,18 +20,15 @@
}, },
apollo: { apollo: {
moduleQuery() { module() {
return { return {
query: MODULE_DETAILS_QUERY, query: MODULE_DETAILS_QUERY,
variables: { variables: {
slug: store.state.moduleSlug slug: store.state.moduleSlug
}, },
manual: true, update(data) {
result({data, loading, networkStatus}) { const cleanedData = this.$getRidOfEdges(data);
if (!loading) { return cleanedData.module || {};
const cleanedData = this.$getRidOfEdges(data);
this.module = cleanedData.modules[0] || {};
}
} }
} }
} }

View File

@ -6,6 +6,7 @@ from graphene import relay
from graphene_django import DjangoObjectType from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField from graphene_django.filter import DjangoFilterConnectionField
from api.utils import get_object
from book.models import Book, Topic, Module, Chapter, ContentBlock from book.models import Book, Topic, Module, Chapter, ContentBlock
from book.schema.queries import BookNode, TopicNode, ModuleNode, ContentBlockNode from book.schema.queries import BookNode, TopicNode, ModuleNode, ContentBlockNode
@ -49,7 +50,7 @@ class VisibilityNode(DjangoObjectType):
class BookQuery(object): class BookQuery(object):
book = relay.Node.Field(BookNode) book = relay.Node.Field(BookNode)
topic = relay.Node.Field(TopicNode) topic = relay.Node.Field(TopicNode)
module = relay.Node.Field(ModuleNode) module = graphene.Field(ModuleNode, slug=graphene.String())
chapter = relay.Node.Field(FilteredChapterNode) chapter = relay.Node.Field(FilteredChapterNode)
content_block = relay.Node.Field(ContentBlockNode) content_block = relay.Node.Field(ContentBlockNode)
@ -69,3 +70,13 @@ class BookQuery(object):
def resolve_chapters(self, *args, **kwargs): def resolve_chapters(self, *args, **kwargs):
return Chapter.objects.filter(**kwargs).live() return Chapter.objects.filter(**kwargs).live()
def resolve_module(self, info, **kwargs):
slug = kwargs.get('slug')
id = kwargs.get('id')
if id is not None:
return get_object(Module, id)
if slug is not None:
return Module.objects.get(slug=slug)
return None