Your IP : 216.73.216.220


Current Path : /home/deltalab/PMS/partner-manager-backend/graphql/schema/
Upload File :
Current File : //home/deltalab/PMS/partner-manager-backend/graphql/schema/order.schema.js

/**
 * Order mongoose queries
 */

// SERVICES ==========================================
const auth = require('../../services/auth');
const oms = require('../../services/oms');

// RESOURCES =========================================
const { orderTC } = require('../types/order.type');
const { partnerTC } = require('../types/partner.type');
const { shipmentTC } = require('../types/shipment.type');
const { warehouseTC } = require('../types/warehouse.type');

// RELATIONS =========================================
orderTC.addRelation(
  'partner',
  {
    resolver: () => partnerTC.mongooseResolvers.findById(),
    prepareArgs: {
      _id: (source) => source.partnerId,
    },
    projection: { partnerId: true },
  },
);

orderTC.addRelation(
  'warehouse',
  {
    resolver: () => warehouseTC.mongooseResolvers.findById(),
    prepareArgs: {
      _id: (source) => source.warehouseId,
    },
    projection: { warehouseId: true },
  },
);

orderTC.addRelation(
  'shipment',
  {
    resolver: () => shipmentTC.mongooseResolvers.findById(),
    prepareArgs: {
      _id: (source) => source.shipmentId,
    },
    projection: { shipmentId: true },
  },
);

/**
 * Login resolver
 */
orderTC.addResolver({
  kind: 'mutation',
  name: 'ordersRefresh',
  type: orderTC,
  args: {
    partnerId: { type: 'String!' },
  },
  resolve: async ({ args }) => {
    const { partnerId } = args;
    console.log(`refreshing orders for ${partnerId}`);
    await oms.checkOrders(partnerId);
  },
});

// QUERIES ===========================================
const orderQuery = {
  ...auth.authenticationRequired({
    orderById: orderTC.mongooseResolvers.findById(),
    orderOne: orderTC.mongooseResolvers.findOne(),
    orderMany: orderTC.mongooseResolvers.findMany(),
    orderCount: orderTC.mongooseResolvers.count(),
  }),
};

// MUTATIONS =========================================
const orderMutation = {
  ...auth.authenticationRequired({
    ordersRefresh: orderTC.getResolver('ordersRefresh'),
    // orderCreateOne:   orderTC.mongooseResolvers.createOne(),
    // orderCreateMany:  orderTC.mongooseResolvers.createMany(),
    // orderUpdateById:  orderTC.mongooseResolvers.updateById(),
    // orderUpdateOne:   orderTC.mongooseResolvers.updateOne(),
    // orderUpdateMany:  orderTC.mongooseResolvers.updateMany(),
    // orderRemoveById:  orderTC.mongooseResolvers.removeById(),
    // orderRemoveOne:   orderTC.mongooseResolvers.removeOne(),
    // orderRemoveMany:  orderTC.mongooseResolvers.removeMany(),
  }),
};

// EXPORTS ===========================================
module.exports = {
  orderQuery,
  orderMutation,
};