import { PrismaClient } from '@prisma/client'; import * as bcrypt from 'bcrypt'; const prisma = new PrismaClient(); async function main() { const email = (process.env.SEED_ADMIN_EMAIL || 'admin@abshode.local').toLowerCase(); const password = process.env.SEED_ADMIN_PASSWORD || 'Admin@12345'; const name = process.env.SEED_ADMIN_NAME || 'Super Admin'; const passwordHash = await bcrypt.hash(password, 10); const user = await prisma.user.upsert({ where: { email }, update: { passwordHash, name, isActive: true, role: 'super_admin' }, create: { email, passwordHash, name, role: 'super_admin', isActive: true, }, }); // Extracted from Hamkar SettingsSeeder (bakhtargold) — real project defaults found in code const bakhtarSmsValues = { name_fa: 'باختر گلد', name_en: 'bakhtargold', app_url: 'bakhtargold.com', admin_url: 'https://bakhtargold.com/admin', sms_long: 'true', sms_panel: '', melipayamak_user: '', melipayamak_password: '', melipayamak_from: '', sms_panel_username: '', sms_panel_password: '', sms_panel_from: '', send_sms_on_customer_order: '', sms_charge_card: '', sms_charge_iban: '', sms_charge_account_holder: '', sms_charge_instruction: '', }; const bakhtar = await prisma.tenant.upsert({ where: { slug: 'bakhtargold' }, update: { nameFa: bakhtarSmsValues.name_fa, nameEn: bakhtarSmsValues.name_en, domain: 'bakhtargold.com', appUrl: bakhtarSmsValues.app_url, adminUrl: bakhtarSmsValues.admin_url, smsSettingsCache: { values: bakhtarSmsValues, wallet: null, source: 'hamkar/database/seeders/SettingsSeeder.php', syncedAt: new Date().toISOString(), note: 'استخراج از سیدر کد؛ برای داده زنده DB باید همگام‌سازی MySQL انجام شود', }, smsSyncedAt: new Date(), }, create: { product: 'hamkar', slug: 'bakhtargold', nameFa: bakhtarSmsValues.name_fa, nameEn: bakhtarSmsValues.name_en, domain: 'bakhtargold.com', primaryColor: '#20c997', nodeServer: 'https://bakhtargold.com/server', appUrl: bakhtarSmsValues.app_url, adminUrl: bakhtarSmsValues.admin_url, isActive: true, notes: 'نسخه استخراج‌شده از کد/سیدر همکار', smsSettingsCache: { values: bakhtarSmsValues, wallet: null, source: 'hamkar/database/seeders/SettingsSeeder.php', syncedAt: new Date().toISOString(), }, smsSyncedAt: new Date(), }, }); console.log('Seeded admin:', { id: user.id, email: user.email }); console.log('Seeded tenant:', { id: bakhtar.id, slug: bakhtar.slug }); console.log('Login with:', email, '/', password); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });