icons seed
This commit is contained in:
+4
-1
@@ -55,4 +55,7 @@ pids
|
|||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
|
|
||||||
/react/*
|
/react/*
|
||||||
|
|
||||||
|
|
||||||
|
/*.sql
|
||||||
@@ -15,102 +15,109 @@ import { CouponsSeeder } from './coupons.seeder';
|
|||||||
import { NotificationPreferencesSeeder } from './notification-preferences.seeder';
|
import { NotificationPreferencesSeeder } from './notification-preferences.seeder';
|
||||||
import { UserWalletsSeeder } from './user-wallets.seeder';
|
import { UserWalletsSeeder } from './user-wallets.seeder';
|
||||||
import { InventorySeeder } from './inventory.seeder';
|
import { InventorySeeder } from './inventory.seeder';
|
||||||
|
import { IconsSeeder } from './icons.seeder';
|
||||||
// import { NotificationsSeeder } from './notifications.seeder';
|
// import { NotificationsSeeder } from './notifications.seeder';
|
||||||
|
|
||||||
export class DatabaseSeeder extends Seeder {
|
export class DatabaseSeeder extends Seeder {
|
||||||
async run(em: EntityManager) {
|
async run(em: EntityManager) {
|
||||||
const TOTAL_STEPS = 15;
|
const TOTAL_STEPS = 16;
|
||||||
console.info('[Seeder] Starting database seed');
|
// console.info('[Seeder] Starting database seed');
|
||||||
// 1. Create Permissions
|
// // 1. Create Permissions
|
||||||
console.info(`[Seeder] Step 1/${TOTAL_STEPS}: Creating permissions`);
|
// console.info(`[Seeder] Step 1/${TOTAL_STEPS}: Creating permissions`);
|
||||||
const permissionsSeeder = new PermissionsSeeder();
|
// const permissionsSeeder = new PermissionsSeeder();
|
||||||
const permissions = await permissionsSeeder.run(em);
|
// const permissions = await permissionsSeeder.run(em);
|
||||||
console.info(`[Seeder] Step 1/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 1/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 2. Create Roles
|
// // 2. Create Roles
|
||||||
console.info(`[Seeder] Step 2/${TOTAL_STEPS}: Creating roles`);
|
// console.info(`[Seeder] Step 2/${TOTAL_STEPS}: Creating roles`);
|
||||||
const rolesSeeder = new RolesSeeder();
|
// const rolesSeeder = new RolesSeeder();
|
||||||
const rolesMap = await rolesSeeder.run(em, permissions);
|
// const rolesMap = await rolesSeeder.run(em, permissions);
|
||||||
console.info(`[Seeder] Step 2/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 2/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 3. Create Restaurants
|
// // 3. Create Restaurants
|
||||||
console.info(`[Seeder] Step 3/${TOTAL_STEPS}: Creating restaurants`);
|
// console.info(`[Seeder] Step 3/${TOTAL_STEPS}: Creating restaurants`);
|
||||||
const restaurantsSeeder = new RestaurantsSeeder();
|
// const restaurantsSeeder = new RestaurantsSeeder();
|
||||||
const restaurantsMap = await restaurantsSeeder.run(em);
|
// const restaurantsMap = await restaurantsSeeder.run(em);
|
||||||
console.info(`[Seeder] Step 3/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 3/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 4. Create Payment Methods for all Restaurants
|
// // 4. Create Payment Methods for all Restaurants
|
||||||
console.info(`[Seeder] Step 4/${TOTAL_STEPS}: Creating payment methods`);
|
// console.info(`[Seeder] Step 4/${TOTAL_STEPS}: Creating payment methods`);
|
||||||
const allRestaurants = await em.find(Restaurant, {});
|
// const allRestaurants = await em.find(Restaurant, {});
|
||||||
const paymentMethodsSeeder = new PaymentMethodsSeeder();
|
// const paymentMethodsSeeder = new PaymentMethodsSeeder();
|
||||||
await paymentMethodsSeeder.run(em, allRestaurants);
|
// await paymentMethodsSeeder.run(em, allRestaurants);
|
||||||
console.info(`[Seeder] Step 4/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 4/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 5. Create Delivery Methods for all Restaurants
|
// // 5. Create Delivery Methods for all Restaurants
|
||||||
console.info(`[Seeder] Step 5/${TOTAL_STEPS}: Creating delivery methods`);
|
// console.info(`[Seeder] Step 5/${TOTAL_STEPS}: Creating delivery methods`);
|
||||||
const deliveryMethodsSeeder = new DeliveryMethodsSeeder();
|
// const deliveryMethodsSeeder = new DeliveryMethodsSeeder();
|
||||||
await deliveryMethodsSeeder.run(em, allRestaurants);
|
// await deliveryMethodsSeeder.run(em, allRestaurants);
|
||||||
console.info(`[Seeder] Step 5/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 5/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 6. Create Schedules for all Restaurants
|
// // 6. Create Schedules for all Restaurants
|
||||||
console.info(`[Seeder] Step 6/${TOTAL_STEPS}: Creating schedules`);
|
// console.info(`[Seeder] Step 6/${TOTAL_STEPS}: Creating schedules`);
|
||||||
const schedulesSeeder = new SchedulesSeeder();
|
// const schedulesSeeder = new SchedulesSeeder();
|
||||||
await schedulesSeeder.run(em, allRestaurants);
|
// await schedulesSeeder.run(em, allRestaurants);
|
||||||
console.info(`[Seeder] Step 6/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 6/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 7. Create Notification Preferences for all Restaurants
|
// 7. Create Icons
|
||||||
console.info(`[Seeder] Step 7/${TOTAL_STEPS}: Creating notification preferences`);
|
console.info(`[Seeder] Step 7/${TOTAL_STEPS}: Creating icons`);
|
||||||
const notificationPreferencesSeeder = new NotificationPreferencesSeeder();
|
const iconsSeeder = new IconsSeeder();
|
||||||
await notificationPreferencesSeeder.run(em, allRestaurants);
|
await iconsSeeder.run(em);
|
||||||
console.info(`[Seeder] Step 7/${TOTAL_STEPS}: Done`);
|
console.info(`[Seeder] Step 7/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 8. Create Categories
|
// // 8. Create Notification Preferences for all Restaurants
|
||||||
console.info(`[Seeder] Step 8/${TOTAL_STEPS}: Creating categories`);
|
// console.info(`[Seeder] Step 8/${TOTAL_STEPS}: Creating notification preferences`);
|
||||||
const categoriesSeeder = new CategoriesSeeder();
|
// const notificationPreferencesSeeder = new NotificationPreferencesSeeder();
|
||||||
const categoriesMap = await categoriesSeeder.run(em, restaurantsMap);
|
// await notificationPreferencesSeeder.run(em, allRestaurants);
|
||||||
console.info(`[Seeder] Step 8/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 8/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 9. Create Foods
|
// // 9. Create Categories
|
||||||
console.info(`[Seeder] Step 9/${TOTAL_STEPS}: Creating foods`);
|
// console.info(`[Seeder] Step 9/${TOTAL_STEPS}: Creating categories`);
|
||||||
const foodsSeeder = new FoodsSeeder();
|
// const categoriesSeeder = new CategoriesSeeder();
|
||||||
await foodsSeeder.run(em, restaurantsMap, categoriesMap);
|
// const categoriesMap = await categoriesSeeder.run(em, restaurantsMap);
|
||||||
console.info(`[Seeder] Step 9/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 9/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 10. Create Inventory for all Foods
|
// // 10. Create Foods
|
||||||
console.info(`[Seeder] Step 10/${TOTAL_STEPS}: Creating inventory`);
|
// console.info(`[Seeder] Step 10/${TOTAL_STEPS}: Creating foods`);
|
||||||
const inventorySeeder = new InventorySeeder();
|
// const foodsSeeder = new FoodsSeeder();
|
||||||
await inventorySeeder.run(em);
|
// await foodsSeeder.run(em, restaurantsMap, categoriesMap);
|
||||||
console.info(`[Seeder] Step 10/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 10/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 11. Create Coupons
|
// // 11. Create Inventory for all Foods
|
||||||
console.info(`[Seeder] Step 11/${TOTAL_STEPS}: Creating coupons`);
|
// console.info(`[Seeder] Step 11/${TOTAL_STEPS}: Creating inventory`);
|
||||||
const couponsSeeder = new CouponsSeeder();
|
// const inventorySeeder = new InventorySeeder();
|
||||||
await couponsSeeder.run(em, restaurantsMap);
|
// await inventorySeeder.run(em);
|
||||||
console.info(`[Seeder] Step 11/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 11/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 12. Create Admins
|
// // 12. Create Coupons
|
||||||
console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Creating admins`);
|
// console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Creating coupons`);
|
||||||
const adminsSeeder = new AdminsSeeder();
|
// const couponsSeeder = new CouponsSeeder();
|
||||||
await adminsSeeder.run(em, rolesMap, restaurantsMap);
|
// await couponsSeeder.run(em, restaurantsMap);
|
||||||
console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 13. Create Users
|
// // 13. Create Admins
|
||||||
console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Creating users`);
|
// console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Creating admins`);
|
||||||
const usersSeeder = new UsersSeeder();
|
// const adminsSeeder = new AdminsSeeder();
|
||||||
await usersSeeder.run(em);
|
// await adminsSeeder.run(em, rolesMap, restaurantsMap);
|
||||||
console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 14. Create User Wallets
|
// // 14. Create Users
|
||||||
console.info(`[Seeder] Step 14/${TOTAL_STEPS}: Creating user wallets`);
|
// console.info(`[Seeder] Step 14/${TOTAL_STEPS}: Creating users`);
|
||||||
const userWalletsSeeder = new UserWalletsSeeder();
|
// const usersSeeder = new UsersSeeder();
|
||||||
await userWalletsSeeder.run(em);
|
// await usersSeeder.run(em);
|
||||||
console.info(`[Seeder] Step 14/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 14/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
// 15. Create Notifications for admins and users for all restaurants
|
// // 15. Create User Wallets
|
||||||
console.info(`[Seeder] Step 15/${TOTAL_STEPS}: (optional) creating notifications`);
|
// console.info(`[Seeder] Step 15/${TOTAL_STEPS}: Creating user wallets`);
|
||||||
// const notificationsSeeder = new NotificationsSeeder();
|
// const userWalletsSeeder = new UserWalletsSeeder();
|
||||||
// await notificationsSeeder.run(em);
|
// await userWalletsSeeder.run(em);
|
||||||
console.info(`[Seeder] Step 15/${TOTAL_STEPS}: Done`);
|
// console.info(`[Seeder] Step 15/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
|
// // 16. Create Notifications for admins and users for all restaurants
|
||||||
|
// console.info(`[Seeder] Step 16/${TOTAL_STEPS}: (optional) creating notifications`);
|
||||||
|
// // const notificationsSeeder = new NotificationsSeeder();
|
||||||
|
// // await notificationsSeeder.run(em);
|
||||||
|
// console.info(`[Seeder] Step 16/${TOTAL_STEPS}: Done`);
|
||||||
|
|
||||||
console.info('[Seeder] Database seed completed');
|
console.info('[Seeder] Database seed completed');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
export const iconsSeedData = [
|
||||||
|
{
|
||||||
|
groupId: '01KD7DG4VCTWZRSA54M3PEJ6NW',
|
||||||
|
csvFile: 'icons.csv',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
groupId: '01KD7DGBDFX76VKXMKQKR51RJK',
|
||||||
|
csvFile: 'icons2.csv',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
groupId: '01KD7DGBDFX76VKXMKQKR61RJK',
|
||||||
|
csvFile: 'icons3.csv',
|
||||||
|
},
|
||||||
|
] as const;
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import type { EntityManager } from '@mikro-orm/core';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
|
import { Icon } from '../modules/icons/entities/icon.entity';
|
||||||
|
import { Group } from '../modules/icons/entities/group.entity';
|
||||||
|
import { iconsSeedData } from './data/icons.data';
|
||||||
|
|
||||||
|
export class IconsSeeder {
|
||||||
|
private loadUrlsFromCsv(csvFile: string): string[] {
|
||||||
|
const csvPath = path.join(process.cwd(), 'src', 'seeders', 'data', csvFile);
|
||||||
|
const csvContent = fs.readFileSync(csvPath, 'utf-8');
|
||||||
|
|
||||||
|
return csvContent
|
||||||
|
.split('\n')
|
||||||
|
.slice(1)
|
||||||
|
.map(line => line.trim().replace(/^"|"$/g, ''))
|
||||||
|
.filter(url => url.length > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
async run(em: EntityManager): Promise<void> {
|
||||||
|
for (const { groupId, csvFile } of iconsSeedData) {
|
||||||
|
const group = await em.findOne(Group, { id: groupId });
|
||||||
|
if (!group) {
|
||||||
|
console.warn(`[IconsSeeder] Skipping ${csvFile} — group ${groupId} not found`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const urls = this.loadUrlsFromCsv(csvFile);
|
||||||
|
|
||||||
|
for (const url of urls) {
|
||||||
|
const existing = await em.findOne(Icon, { url, group });
|
||||||
|
if (existing) continue;
|
||||||
|
|
||||||
|
const icon = em.create(Icon, { url, group });
|
||||||
|
em.persist(icon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await em.flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user