import { PrismaClient } from '@prisma/client' import bcrypt from 'bcryptjs' const prisma = new PrismaClient() // Список базовых категорий товаров const DEFAULT_CATEGORIES = [ 'Одежда и обувь', 'Косметика и парфюмерия', 'Дом и сад', 'Детские товары', 'Спорт и отдых', 'Электроника', 'Книги', 'Здоровье', 'Автотовары', 'Строительство и ремонт', 'Продукты питания', 'Зоотовары', 'Дача, сад и огород', 'Канцелярские товары', 'Хобби и творчество', 'Украшения и аксессуары', 'Сумки и чемоданы', 'Техника для дома', 'Музыкальные инструменты', 'Игры и игрушки' ] let isInitialized = false export async function ensureAdmin() { try { // Проверяем есть ли уже админ const existingAdmin = await prisma.admin.findUnique({ where: { username: 'admin' } }) if (existingAdmin) { return existingAdmin } console.log('🔐 Создание администратора...') // Генерируем хеш пароля const password = 'admin123' // Временный пароль const hashedPassword = await bcrypt.hash(password, 12) // Создаем администратора const admin = await prisma.admin.create({ data: { username: 'admin', password: hashedPassword, email: 'admin@sferav.com', isActive: true } }) console.log('✅ Администратор создан:', admin.username) return admin } catch (error) { console.error('❌ Ошибка создания администратора:', error) return null } } export async function ensureCategories() { try { // Проверяем сколько категорий уже есть const existingCount = await prisma.category.count() if (existingCount >= DEFAULT_CATEGORIES.length) { return { created: 0, existing: existingCount } } let createdCount = 0 for (const categoryName of DEFAULT_CATEGORIES) { try { // Проверяем существует ли категория const existingCategory = await prisma.category.findUnique({ where: { name: categoryName } }) if (!existingCategory) { // Создаем категорию await prisma.category.create({ data: { name: categoryName } }) createdCount++ } } catch (error) { // Игнорируем ошибки дублирования if (error.code !== 'P2002') { console.error(`Ошибка создания категории "${categoryName}":`, error.message) } } } if (createdCount > 0) { console.log(`📂 Создано категорий: ${createdCount}`) } return { created: createdCount, existing: existingCount } } catch (error) { console.error('❌ Ошибка создания категорий:', error) return { created: 0, existing: 0 } } } export async function initializeDatabase() { if (isInitialized) { return } try { console.log('🚀 Проверка инициализации базы данных...') // Инициализируем админа и категории параллельно const [admin, categories] = await Promise.all([ ensureAdmin(), ensureCategories() ]) isInitialized = true if (admin || categories.created > 0) { console.log('✨ Инициализация базы данных завершена') } return { admin, categories } } catch (error) { console.error('💥 Ошибка инициализации базы данных:', error) return null } } // Автоматическая инициализация при импорте модуля if (typeof window === 'undefined') { // Только на сервере initializeDatabase().catch(console.error) }