diff --git a/packages/backend/src/graphql/queries/get-app-connections.ts b/packages/backend/src/graphql/queries/get-app-connections.ts new file mode 100644 index 00000000..129b5b54 --- /dev/null +++ b/packages/backend/src/graphql/queries/get-app-connections.ts @@ -0,0 +1,25 @@ +import { GraphQLList, GraphQLString, GraphQLNonNull } from 'graphql'; +import Connection from '../../models/connection'; +import RequestWithCurrentUser from '../../types/express/request-with-current-user'; +import connectionType from '../types/connection'; + +type Params = { + key: string +} + +const getAppConnectionsResolver = async (params: Params, req: RequestWithCurrentUser) => { + const connections = await Connection.query() + .where({ user_id: req.currentUser.id, verified: true, key: params.key }) + + return connections; +} + +const getAppConnections = { + type: GraphQLList(connectionType), + args: { + key: { type: GraphQLNonNull(GraphQLString) } + }, + resolve: (_: any, params: Params, req: RequestWithCurrentUser) => getAppConnectionsResolver(params, req) +} + +export default getAppConnections; diff --git a/packages/backend/src/graphql/root-query.ts b/packages/backend/src/graphql/root-query.ts index 5546a69a..01b129c0 100644 --- a/packages/backend/src/graphql/root-query.ts +++ b/packages/backend/src/graphql/root-query.ts @@ -2,13 +2,15 @@ import { GraphQLObjectType } from 'graphql'; import getApps from './queries/get-apps'; import getApp from './queries/get-app'; import getConnectedApps from './queries/get-connected-apps'; +import getAppConnections from './queries/get-app-connections'; const rootQuery = new GraphQLObjectType({ name: 'Query', fields: { getApps, getApp, - getConnectedApps + getConnectedApps, + getAppConnections } }); diff --git a/packages/backend/src/graphql/types/connection-data.ts b/packages/backend/src/graphql/types/connection-data.ts new file mode 100644 index 00000000..a713641e --- /dev/null +++ b/packages/backend/src/graphql/types/connection-data.ts @@ -0,0 +1,10 @@ +import { GraphQLString, GraphQLObjectType } from 'graphql'; + +const connectionDataType = new GraphQLObjectType({ + name: 'connectionData', + fields: { + screenName: { type: GraphQLString }, + } +}) + +export default connectionDataType; diff --git a/packages/backend/src/graphql/types/connection.ts b/packages/backend/src/graphql/types/connection.ts index 29daa2a8..49fd4df2 100644 --- a/packages/backend/src/graphql/types/connection.ts +++ b/packages/backend/src/graphql/types/connection.ts @@ -1,12 +1,12 @@ import { GraphQLObjectType, GraphQLString, GraphQLBoolean } from 'graphql'; -import twitterCredentialType from './twitter-credential'; +import connectionDataType from './connection-data'; const connectionType = new GraphQLObjectType({ name: 'connection', fields: { id: { type: GraphQLString }, key: { type: GraphQLString }, - data: { type: twitterCredentialType }, + data: { type: connectionDataType }, verified: { type: GraphQLBoolean }, } })