diff --git a/server/src/schema/queries/GetClones.js b/server/src/schema/queries/GetClones.js new file mode 100644 index 000000000..45a43eadf --- /dev/null +++ b/server/src/schema/queries/GetClones.js @@ -0,0 +1,55 @@ +import { + GraphQLList, + GraphQLID +} from 'graphql' + +import { + OperationsError +} from '../../errors' + +import { GetClonesInputType } from '../types/input'; +import { GetClonesType } from '../types' +import { Clone } from '../../models' +import logger from '../../config/logger' + +import { isDefined } from '../../config/utils' + +const args = { + cloneIdList: {type: GetClonesInputType} +} + +const resolve = async(parent, { cloneIdList }, context) => { + logger.debug('Get Clones -> Entering Fuction. %j', cloneIdList) + try{ + let clones = [] + for (var i = 0; i < cloneIdList.cloneIdList.length; i++) { + let existingClone = await Clone.findOne({ + _id: cloneIdList.cloneIdList[i] + }) + + if(isDefined(existingClone)){ + clones.push({ + id: cloneIdList.cloneIdList[i], + teamId: existingClone.teamId, + botId: existingClone.botId + }) + } + + } + + return clones + } catch (err){ + logger.error('Get Clones error: %s', err.stack) + throw new OperationsError('There has been an error getting the clones.') + } +} + +const query = { + getClones: { + type: new GraphQLList(GetClonesType), + args, + resolve + } +} + +export default query diff --git a/server/src/schema/queries/index.js b/server/src/schema/queries/index.js index 11d48edc5..bdf6ff629 100644 --- a/server/src/schema/queries/index.js +++ b/server/src/schema/queries/index.js @@ -4,12 +4,14 @@ import { import ListClones from './ListClones' import HistoryClones from './HistoryClones' +import GetClones from './GetClones' const RootQuery = new GraphQLObjectType({ name: 'RootQueryType', fields: Object.assign( ListClones, - HistoryClones + HistoryClones, + GetClones ) }) diff --git a/server/src/schema/types/GetClonesType.js b/server/src/schema/types/GetClonesType.js new file mode 100644 index 000000000..f3bdebe35 --- /dev/null +++ b/server/src/schema/types/GetClonesType.js @@ -0,0 +1,14 @@ +import { + GraphQLObjectType, + GraphQLID +} from 'graphql' + +const GetClonesType = new GraphQLObjectType({ + name: 'GetClones', + fields: () => ({ + id: {type: GraphQLID}, + teamId: {type: GraphQLID}, + botId: {type: GraphQLID} + }) +}) +export default GetClonesType diff --git a/server/src/schema/types/index.js b/server/src/schema/types/index.js index 4c2b8e040..189212b48 100644 --- a/server/src/schema/types/index.js +++ b/server/src/schema/types/index.js @@ -1,5 +1,7 @@ import CloneType from './CloneType' +import GetClonesType from './GetClonesType' export { - CloneType + CloneType, + GetClonesType } diff --git a/server/src/schema/types/input/GetClones.js b/server/src/schema/types/input/GetClones.js new file mode 100644 index 000000000..dcdcd1fad --- /dev/null +++ b/server/src/schema/types/input/GetClones.js @@ -0,0 +1,15 @@ +import { + GraphQLInputObjectType, + GraphQLList, + GraphQLID +} from 'graphql'; + +const Type = new GraphQLInputObjectType({ + name: 'GetClonesInput', + description: 'Allows to receive a list of clone ids to get information', + fields: () => ({ + cloneIdList: { type: new GraphQLList(GraphQLID) } + }) +}); + +export default Type; diff --git a/server/src/schema/types/input/index.js b/server/src/schema/types/input/index.js index e51b0ca74..6e528aa15 100644 --- a/server/src/schema/types/input/index.js +++ b/server/src/schema/types/input/index.js @@ -1,5 +1,7 @@ import CloneInputType from './Clone' +import GetClonesInputType from './GetClones' export { - CloneInputType + CloneInputType, + GetClonesInputType };