| Current Path : /home/deltalab/PMS/partner-manager-backend/graphql/schema/ |
| Current File : //home/deltalab/PMS/partner-manager-backend/graphql/schema/warehouse.schema.js |
const auth = require('../../services/auth');
// Import dependencies
const { partnerTC } = require('../types/partner.type');
const { warehouseTC } = require('../types/warehouse.type');
const { warehouseModel } = require('../../models/mongoose/warehouse');
// RELATIONS =========================================
warehouseTC.addRelation(
'partner',
{
resolver: () => partnerTC.mongooseResolvers.findById(),
prepareArgs: {
_id: (source) => source.partnerId,
},
projection: { partnerId: true },
},
);
warehouseTC.addResolver({
kind: 'query',
name: 'getChannelAvailableWarehouses',
type: [warehouseTC],
args: {
isShared: 'Boolean',
partnerId: 'MongoID',
channelId: 'MongoID',
},
resolve: async ({ args }) => {
const request = {};
if (args.isShared) {
request.isShared = args.isShared;
}
if (args.partnerId) {
request.partnerId = args.partnerId;
}
if (args.channelId) {
request.channels = { $in: args.channelId };
}
const list = await warehouseModel.find(request).exec();
return list;
},
});
// QUERIES ===========================================
const warehouseQuery = {
...auth.authenticationRequired({
warehouseById: warehouseTC.mongooseResolvers.findById(),
warehouseMany: warehouseTC.mongooseResolvers.findMany(),
warehouseCount: warehouseTC.mongooseResolvers.count(),
getChannelAvailableWarehouses: warehouseTC.getResolver('getChannelAvailableWarehouses'),
}),
};
// MUTATIONS =========================================
const warehouseMutation = {
...auth.authenticationRequired({
warehouseCreateOne: warehouseTC.mongooseResolvers.createOne(),
warehouseCreateMany: warehouseTC.mongooseResolvers.createMany(),
warehouseUpdateById: warehouseTC.mongooseResolvers.updateById(),
warehouseUpdateOne: warehouseTC.mongooseResolvers.updateOne(),
warehouseUpdateMany: warehouseTC.mongooseResolvers.updateMany(),
warehouseRemoveById: warehouseTC.mongooseResolvers.removeById(),
warehouseRemoveOne: warehouseTC.mongooseResolvers.removeOne(),
warehouseRemoveMany: warehouseTC.mongooseResolvers.removeMany(),
}),
};
// EXPORTS ===========================================
module.exports = {
warehouseQuery,
warehouseMutation,
warehouseTC,
};