added generic subscribing to directus wss by name
This commit is contained in:
parent
39e1f2afbc
commit
b9ee596d56
@ -65,29 +65,39 @@ const generateSubscriptionQuery = (typeName) => {
|
||||
`;
|
||||
};
|
||||
|
||||
// Generate subscription query for 'projects'
|
||||
const projectsQuery = generateSubscriptionQuery('projects');
|
||||
// const todosQuery = generateSubscriptionQuery('todos');
|
||||
const handleSubscription = (typeName) => {
|
||||
const MUTATED = `${typeName.toUpperCase()}_MUTATED`;
|
||||
|
||||
client.subscribe(
|
||||
{
|
||||
query: projectsQuery,
|
||||
},
|
||||
{
|
||||
next: data => {
|
||||
if (data && data.data && data.data.projects_mutated) {
|
||||
pubsub.publish(PROJECTS_MUTATED, { projects_mutated: data.data.projects_mutated });
|
||||
}
|
||||
const type = findTypeDefinition(typeName);
|
||||
const fields = extractFields(type);
|
||||
|
||||
const query = generateSubscriptionQuery(typeName);
|
||||
|
||||
client.subscribe(
|
||||
{
|
||||
query: query,
|
||||
},
|
||||
error: error => console.error('error:', error),
|
||||
}
|
||||
);
|
||||
{
|
||||
next: data => {
|
||||
if (data && data.data && data.data[`${typeName}_mutated`]) {
|
||||
pubsub.publish(MUTATED, { [`${typeName}_mutated`]: data.data[`${typeName}_mutated`] });
|
||||
}
|
||||
},
|
||||
error: error => console.error('error:', error),
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
[`${typeName}_mutated`]: {
|
||||
subscribe: () => pubsub.asyncIterator([MUTATED]),
|
||||
resolve: payload => payload[`${typeName}_mutated`],
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
Subscription: {
|
||||
projects_mutated: {
|
||||
subscribe: () => pubsub.asyncIterator([PROJECTS_MUTATED]),
|
||||
resolve: payload => payload.projects_mutated,
|
||||
},
|
||||
...handleSubscription('projects'),
|
||||
...handleSubscription('todos'),
|
||||
},
|
||||
};
|
Reference in New Issue
Block a user