import type { EntityManager } from '@mikro-orm/core'; import { User } from '../modules/users/entities/user.entity'; import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; import { WalletTransaction } from '../modules/users/entities/wallet-transaction.entity'; import { WalletTransactionReason, WalletTransactionType } from 'src/modules/users/interface/wallet'; export class UserWalletsSeeder { async run(em: EntityManager): Promise { const users = await em.find(User, {}); const restaurants = await em.find(Restaurant, {}); for (const user of users) { for (const restaurant of restaurants) { // Check if wallet already exists for this user-restaurant combination const existingWallet = await em.findOne(WalletTransaction, { user: { id: user.id }, restaurant: { id: restaurant.id }, }); if (!existingWallet) { const wallet = em.create(WalletTransaction, { user, restaurant, balance: 150000000, amount: 150000000, type: WalletTransactionType.CREDIT, reason: WalletTransactionReason.DEPOSIT, }); em.persist(wallet); } } } await em.flush(); } }