This repository has been archived on 2023-09-04. You can view files and clone it, but cannot push or open issues or pull requests.
ARCHIVED-graphql/resolvers/projects.js

55 lines
1.2 KiB
JavaScript
Raw Normal View History

2023-08-23 05:25:32 +00:00
const { createClient } = require('graphql-ws');
const WebSocket = require('ws');
2023-08-23 06:53:31 +00:00
const { PubSub } = require('graphql-subscriptions');
const pubsub = new PubSub();
const PROJECTS_MUTATED = 'PROJECTS_MUTATED';
2023-08-23 05:25:32 +00:00
const client = createClient({
url: 'wss://directus.andert.me/graphql',
keepAlive: 30000,
webSocketImpl: WebSocket,
connectionParams: async () => {
2023-08-23 07:30:08 +00:00
return { access_token: process.env.DIRECTUS_API };
2023-08-23 05:25:32 +00:00
},
});
client.subscribe(
{
query: `
subscription {
projects_mutated {
2023-08-23 06:53:31 +00:00
key
event
2023-08-23 05:25:32 +00:00
data {
2023-08-23 06:53:31 +00:00
id
2023-08-23 05:25:32 +00:00
text
date_updated
2023-08-23 07:30:08 +00:00
user_updated {
2023-08-23 05:25:32 +00:00
first_name
2023-08-23 07:30:08 +00:00
last_name
email
2023-08-23 05:25:32 +00:00
}
}
}
}
`,
},
{
2023-08-23 06:53:31 +00:00
next: data => {
if (data && data.data && data.data.projects_mutated) {
pubsub.publish(PROJECTS_MUTATED, { projects_mutated: data.data.projects_mutated });
}
},
2023-08-23 05:25:32 +00:00
error: error => console.error('error:', error),
}
2023-08-23 06:53:31 +00:00
);
module.exports = {
Subscription: {
projects_mutated: {
subscribe: () => pubsub.asyncIterator([PROJECTS_MUTATED]),
resolve: payload => payload.projects_mutated,
},
},
};