File size: 1,976 Bytes
97dab2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { DataSource } from 'typeorm';
import { Order } from '@bpm/data/models/order.entity';
import { Customer } from '@bpm/data/models/customer.entity';
import { Employee } from '@bpm/data/models/employee.entity';
import { Shipper } from '@bpm/data/models/shipper.entity';

export async function seedOrders(dataSource: DataSource) {
  const repo = dataSource.getRepository(Order);
  const existing = await repo.count();
  if (existing > 0) {
    console.log('🛑 Order already exist. Skipping...');
    return;
  }

  // Get references to the entities
  const customerRepo = dataSource.getRepository(Customer);
  const employeeRepo = dataSource.getRepository(Employee);
  const shipperRepo = dataSource.getRepository(Shipper);

  // Fetch real records for seeding
  const customers = await customerRepo.find({ take: 10 }); // Get first 10 customers
  const employees = await employeeRepo.find({ take: 10 }); // Get first 10 employees
  const shippers = await shipperRepo.find({ take: 5 }); // Get first 5 shippers

  const orders = customers.map((customer, index) => {
    return {
      Customer: customer,
      Employee: employees[index % employees.length], // Ensure we loop through employees
      OrderDate: new Date(),
      RequiredDate: new Date(new Date().setDate(new Date().getDate() + 7)), // 7 days after OrderDate
      ShippedDate: new Date(new Date().setDate(new Date().getDate() + 10)), // 10 days after OrderDate
      ShipVia: shippers[index % shippers.length], // Loop through shippers
      Freight: parseFloat((Math.random() * 100).toFixed(2)), // Random freight value
      ShipName: `${customer.CompanyName} Shipping`,
      ShipAddress: `${customer.Address}`,
      ShipCity: customer.City,
      ShipRegion: customer.Region,
      ShipPostalCode: customer.PostalCode,
      ShipCountry: customer.Country,
    };
  });

  // Insert orders into the database
  await dataSource.getRepository(Order).save(orders);
  console.log('✅ Seeded orders');
}