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"
query ModulesQuery($slug: String!) {
modules(slug: $slug) {
edges {
node {
id
slug
title
metaTitle
teaser
intro
objectiveGroups {
edges {
node {
id
title
objectiveSet {
edges {
node {
id
text
}
}
module(slug: $slug) {
id
slug
title
metaTitle
teaser
intro
objectiveGroups {
edges {
node {
id
title
objectiveSet {
edges {
node {
id
text
}
}
}
}
chapters {
edges {
node {
id
title
contentBlocks {
edges {
node {
...ContentBlockParts
}
}
}
}
chapters {
edges {
node {
id
title
contentBlocks {
edges {
node {
...ContentBlockParts
}
}
}

View File

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

View File

@ -6,6 +6,7 @@ from graphene import relay
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from api.utils import get_object
from book.models import Book, Topic, Module, Chapter, ContentBlock
from book.schema.queries import BookNode, TopicNode, ModuleNode, ContentBlockNode
@ -49,7 +50,7 @@ class VisibilityNode(DjangoObjectType):
class BookQuery(object):
book = relay.Node.Field(BookNode)
topic = relay.Node.Field(TopicNode)
module = relay.Node.Field(ModuleNode)
module = graphene.Field(ModuleNode, slug=graphene.String())
chapter = relay.Node.Field(FilteredChapterNode)
content_block = relay.Node.Field(ContentBlockNode)
@ -69,3 +70,13 @@ class BookQuery(object):
def resolve_chapters(self, *args, **kwargs):
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