diff --git a/src/db/seeders/shipmentSeeder.ts b/src/db/seeders/shipmentSeeder.ts index 82062e9..44eabdb 100644 --- a/src/db/seeders/shipmentSeeder.ts +++ b/src/db/seeders/shipmentSeeder.ts @@ -1,4 +1,3 @@ -import { cleanMongoData, extractDumpData, getCollectionData } from "./utils/extractDumpData"; import { DeliveryType } from "../../common/enums/shipment.enum"; import { Logger } from "../../core/logging/logger"; import { ShipmentModel } from "../../modules/shipment/models/shipment.model"; @@ -7,100 +6,72 @@ export const SeedShipment = async (logger: Logger) => { try { logger.info("ShipmentMethod seeding started"); - // Extract data from dump - const dumpData = extractDumpData(); - const shipmentsData = getCollectionData(dumpData, "shipments"); + // Remove all existing shipment documents + await ShipmentModel.deleteMany({}); + logger.info("Existing shipment collection cleared"); - if (shipmentsData.length === 0) { - logger.warn("No shipment data found in dump, using fallback data"); - const fallbackProviders = [ - { - name: "پست", - description: "ارسال توسط پست", - costs: [ - { weightRange: { min: 0, max: 1 }, cost_first: 40000, cost_rest: 2000 }, - { weightRange: { min: 1, max: 5 }, cost_first: 80000, cost_rest: 2000 }, - { weightRange: { min: 5, max: 10 }, cost_first: 100000, cost_rest: 2000 }, - ], - deliveryTime: 5, - deliveryType: DeliveryType.Standard, - }, - { - name: "چاپار", - description: "ارائه بهترین راه حل های جهانی لجستیک چاپار", - costs: [ - { weightRange: { min: 0, max: 2 }, cost_first: 40000, cost_rest: 2000 }, - { weightRange: { min: 2, max: 6 }, cost_first: 80000, cost_rest: 2000 }, - { weightRange: { min: 6, max: 12 }, cost_first: 100000, cost_rest: 2000 }, - ], - deliveryTime: 6, - deliveryType: DeliveryType.Standard, - }, - { - name: "پیک", - description: "ارسال توسط پیک", - costs: [ - { weightRange: { min: 0, max: 1 }, cost_first: 40000, cost_rest: 2000 }, - { weightRange: { min: 1, max: 3 }, cost_first: 80000, cost_rest: 2000 }, - { weightRange: { min: 3, max: 6 }, cost_first: 100000, cost_rest: 2000 }, - ], - deliveryTime: 0, - deliveryType: DeliveryType.SameDay, - }, - { - name: "تیپاکس", - description: "ارسال بسته های پستی در سریعترین زمان، از درب منزل با امکان پرداخت هزینه بعد از ارسال و پوشش تمام نقاط ایران", - costs: [ - { weightRange: { min: 0, max: 1 }, cost_first: 40000, cost_rest: 2000 }, - { weightRange: { min: 1, max: 5 }, cost_first: 80000, cost_rest: 2000 }, - { weightRange: { min: 5, max: 10 }, cost_first: 100000, cost_rest: 2000 }, - ], - deliveryTime: 2, - deliveryType: DeliveryType.Express, - }, - { - name: "باربری", - description: "ارسال توسط باربری", - costs: [ - { weightRange: { min: 0, max: 10 }, cost_first: 40000, cost_rest: 2000 }, - { weightRange: { min: 10, max: 20 }, cost_first: 80000, cost_rest: 2000 }, - { weightRange: { min: 20, max: 50 }, cost_first: 100000, cost_rest: 2000 }, - ], - deliveryTime: 7, - deliveryType: DeliveryType.Standard, - }, - ]; + const fallbackProviders = [ + { + name: "پست", + description: "ارسال توسط پست", + costs: [ + { weightRange: { min: 0, max: 1 }, cost_first: 40000, cost_rest: 2000 }, + { weightRange: { min: 1, max: 5 }, cost_first: 80000, cost_rest: 2000 }, + { weightRange: { min: 5, max: 10 }, cost_first: 100000, cost_rest: 2000 }, + ], + deliveryTime: 5, + deliveryType: DeliveryType.Standard, + }, + { + name: "چاپار", + description: "ارائه بهترین راه حل های جهانی لجستیک چاپار", + costs: [ + { weightRange: { min: 0, max: 2 }, cost_first: 40000, cost_rest: 2000 }, + { weightRange: { min: 2, max: 6 }, cost_first: 80000, cost_rest: 2000 }, + { weightRange: { min: 6, max: 12 }, cost_first: 100000, cost_rest: 2000 }, + ], + deliveryTime: 6, + deliveryType: DeliveryType.Standard, + }, + { + name: "پیک", + description: "ارسال توسط پیک", + costs: [ + { weightRange: { min: 0, max: 1 }, cost_first: 40000, cost_rest: 2000 }, + { weightRange: { min: 1, max: 3 }, cost_first: 80000, cost_rest: 2000 }, + { weightRange: { min: 3, max: 6 }, cost_first: 100000, cost_rest: 2000 }, + ], + deliveryTime: 0, + deliveryType: DeliveryType.SameDay, + }, + { + name: "تیپاکس", + description: "ارسال بسته های پستی در سریعترین زمان، از درب منزل با امکان پرداخت هزینه بعد از ارسال و پوشش تمام نقاط ایران", + costs: [ + { weightRange: { min: 0, max: 1 }, cost_first: 40000, cost_rest: 2000 }, + { weightRange: { min: 1, max: 5 }, cost_first: 80000, cost_rest: 2000 }, + { weightRange: { min: 5, max: 10 }, cost_first: 100000, cost_rest: 2000 }, + ], + deliveryTime: 2, + deliveryType: DeliveryType.Express, + }, + { + name: "باربری", + description: "ارسال توسط باربری", + costs: [ + { weightRange: { min: 0, max: 10 }, cost_first: 40000, cost_rest: 2000 }, + { weightRange: { min: 10, max: 20 }, cost_first: 80000, cost_rest: 2000 }, + { weightRange: { min: 20, max: 50 }, cost_first: 100000, cost_rest: 2000 }, + ], + deliveryTime: 7, + deliveryType: DeliveryType.Standard, + }, + ]; - for (const provider of fallbackProviders) { - await ShipmentModel.create(provider); - } - logger.info("Shipment Providers seeded successfully with fallback data"); - return; - } - - // Clean and prepare shipment data (only non-deleted) - const cleanedShipments = shipmentsData - .map((shipment) => { - const cleaned = cleanMongoData(shipment); - if (cleaned.deleted) { - return null; - } - return { - name: cleaned.name, - description: cleaned.description, - costs: cleaned.costs, - deliveryTime: cleaned.deliveryTime, - deliveryType: cleaned.deliveryType as DeliveryType, - }; - }) - .filter((s) => s !== null); - - if (cleanedShipments.length > 0) { - await ShipmentModel.insertMany(cleanedShipments); - logger.info(`Shipment Providers seeded successfully (${cleanedShipments.length} providers)`); - } else { - logger.warn("No valid shipments found after filtering"); + for (const provider of fallbackProviders) { + await ShipmentModel.create(provider); } + logger.info("Shipment Providers seeded successfully"); } catch (error) { logger.error("Error seeding Shipment providers:", error); } diff --git a/src/modules/shipment/shipment.repository.ts b/src/modules/shipment/shipment.repository.ts index e3877b7..c54bcfb 100644 --- a/src/modules/shipment/shipment.repository.ts +++ b/src/modules/shipment/shipment.repository.ts @@ -12,7 +12,7 @@ class ShipmentRepository extends BaseRepository { const skip = (page - 1) * limit; const count = await this.model.countDocuments({ deleted: false }); - const shipper = await this.model.find({ deleted: false }).skip(skip).limit(limit); + const shipper = await this.model.find({ deleted: false }).skip(skip).limit(limit).lean(); return { shipper, count }; }