| Current Path : /home/deltalab/PMS/partner-manager-backend/graphql/schema/ |
| Current File : //home/deltalab/PMS/partner-manager-backend/graphql/schema/indaco-module.schema.js |
const { indacoModuleTC, indacoModuleUpdateInput } = require('../types/indaco-module.type');
const { indacoModuleModel } = require('../../models/mongoose/indaco-module');
const auth = require('../../services/auth');
// RESOLVERS =========================================
/**
* Register module resolver
*/
indacoModuleTC.addResolver({
kind: 'mutation',
name: 'registerIndacoModule',
type: indacoModuleTC,
args: {
record: { type: indacoModuleUpdateInput }
},
resolve: async ({ args }) => {
// check if the module already exists with the spefified code;
// if not: create it; otherwise: update it
const moduleFilter = { code: args.record.code };
const dbModule = await indacoModuleModel.findOne(moduleFilter).lean();
let resultModule;
if (dbModule) {
await indacoModuleModel.updateOne(moduleFilter, args.record).lean();
resultModule = await indacoModuleModel.findById(dbModule._id).lean();
} else {
resultModule = await new indacoModuleModel(args.record).save();
}
return resultModule;
},
});
// QUERIES ===========================================
const indacoModuleQuery = {
...auth.authenticationRequired({
indacoModuleById: indacoModuleTC.mongooseResolvers.findById(),
indacoModuleByIds: indacoModuleTC.mongooseResolvers.findByIds(),
indacoModuleMany: indacoModuleTC.mongooseResolvers.findMany(),
indacoModuleCount: indacoModuleTC.mongooseResolvers.count(),
}),
};
// MUTATIONS ===========================================
const indacoModuleMutation = {
...auth.apiKeyRequired({
registerIndacoModule: indacoModuleTC.getResolver('registerIndacoModule'),
}, 'MODULE_REGISTRATION'),
};
// EXPORTS ===========================================
module.exports = { indacoModuleQuery, indacoModuleMutation };