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/shipment.schema.js

/**
 * Shipment mongoose queries
 */

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

// 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 =========================================
shipmentTC.addRelation(
  'partner',
  {
    resolver: () => partnerTC.mongooseResolvers.findById(),
    prepareArgs: {
      _id: (source) => source.partnerId,
    },
    projection: { partnerId: true },
  },
);

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

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

// TODO: products

// QUERIES ===========================================
const shipmentQuery = {
  ...auth.authenticationRequired({
    shipmentById: shipmentTC.mongooseResolvers.findById(),
    shipmentOne: shipmentTC.mongooseResolvers.findOne(),
    shipmentMany: shipmentTC.mongooseResolvers.findMany(),
    shipmentCount: shipmentTC.mongooseResolvers.count(),
  }),
};

// MUTATIONS =========================================
const shipmentMutation = {
  ...auth.authenticationRequired({
    // shipmentCreateOne:   shipmentTC.mongooseResolvers.createOne(),
    // shipmentCreateMany:  shipmentTC.mongooseResolvers.createMany(),
    // shipmentUpdateById:  shipmentTC.mongooseResolvers.updateById(),
    // shipmentUpdateOne:   shipmentTC.mongooseResolvers.updateOne(),
    // shipmentUpdateMany:  shipmentTC.mongooseResolvers.updateMany(),
    // shipmentRemoveById:  shipmentTC.mongooseResolvers.removeById(),
    // shipmentRemoveOne:   shipmentTC.mongooseResolvers.removeOne(),
    // shipmentRemoveMany:  shipmentTC.mongooseResolvers.removeMany(),
  }),
};

// EXPORTS ===========================================
module.exports = {
  shipmentQuery,
  shipmentMutation,
};