diff --git a/package.json b/package.json index 1355e8e..427b941 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "db:update": "npx mikro-orm schema:update --run --config ./src/config/mikro-orm.config.dev.ts ", "db:drop": "npx mikro-orm schema:drop --run --config ./src/config/mikro-orm.config.dev.ts", "db:seed": "npx mikro-orm seeder:run --config ./src/config/mikro-orm.config.dev.ts", + "db:reset": "npm run db:drop && npm run db:create && npm run db:seed", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start dist/main", diff --git a/src/seeders/DatabaseSeeder.ts b/src/seeders/DatabaseSeeder.ts index e08eb2c..ab61518 100644 --- a/src/seeders/DatabaseSeeder.ts +++ b/src/seeders/DatabaseSeeder.ts @@ -14,6 +14,7 @@ import { UsersSeeder } from './users.seeder'; import { CouponsSeeder } from './coupons.seeder'; import { NotificationPreferencesSeeder } from './notification-preferences.seeder'; import { UserWalletsSeeder } from './user-wallets.seeder'; +import { InventorySeeder } from './inventory.seeder'; export class DatabaseSeeder extends Seeder { async run(em: EntityManager) { @@ -54,19 +55,23 @@ export class DatabaseSeeder extends Seeder { const foodsSeeder = new FoodsSeeder(); await foodsSeeder.run(em, restaurantsMap, categoriesMap); - // 10. Create Coupons + // 10. Create Inventory for all Foods + const inventorySeeder = new InventorySeeder(); + await inventorySeeder.run(em); + + // 11. Create Coupons const couponsSeeder = new CouponsSeeder(); await couponsSeeder.run(em, restaurantsMap); - // 11. Create Admins + // 12. Create Admins const adminsSeeder = new AdminsSeeder(); await adminsSeeder.run(em, rolesMap, restaurantsMap); - // 12. Create Users + // 13. Create Users const usersSeeder = new UsersSeeder(); await usersSeeder.run(em); - // 13. Create User Wallets + // 14. Create User Wallets const userWalletsSeeder = new UserWalletsSeeder(); await userWalletsSeeder.run(em); } diff --git a/src/seeders/inventory.seeder.ts b/src/seeders/inventory.seeder.ts new file mode 100644 index 0000000..716715e --- /dev/null +++ b/src/seeders/inventory.seeder.ts @@ -0,0 +1,29 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Food } from '../modules/foods/entities/food.entity'; +import { Inventory } from '../modules/inventory/entities/inventory.entity'; + +export class InventorySeeder { + async run(em: EntityManager): Promise { + const foods = await em.find(Food, {}); + + for (const food of foods) { + // Check if inventory already exists for this food + const existingInventory = await em.findOne(Inventory, { + food: { id: food.id }, + }); + + if (!existingInventory) { + const inventory = em.create(Inventory, { + food, + totalStock: 50, + availableStock: 50, + }); + + em.persist(inventory); + } + } + + await em.flush(); + } +} +