Files
multy-stub/server/routers/procurement/scripts/recreate-test-user.js
2025-10-27 19:37:21 +03:00

100 lines
3.7 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const mongoose = require('mongoose');
require('dotenv').config();
// Импорт моделей
const User = require('../models/User');
const Company = require('../models/Company');
const recreateTestUser = async () => {
try {
console.log('[Migration] Processing test user creation...');
// Удалить старого тестового пользователя
console.log('[Migration] Removing old test user...');
const oldUser = await User.findOne({ email: 'admin@test-company.ru' });
if (oldUser) {
// Удалить связанную компанию
if (oldUser.companyId) {
await Company.findByIdAndDelete(oldUser.companyId);
console.log('[Migration] ✓ Old company removed');
}
await User.findByIdAndDelete(oldUser._id);
console.log('[Migration] ✓ Old user removed');
} else {
console.log('[Migration] Old user not found');
}
// Создать новую компанию с правильной кодировкой UTF-8
console.log('[Migration] Creating test company...');
const company = await Company.create({
fullName: 'ООО "Тестовая Компания"',
inn: '1234567890',
ogrn: '1234567890123',
legalForm: 'ООО',
industry: 'IT',
companySize: '50-100',
website: 'https://test-company.ru',
description: 'Тестовая компания для разработки',
address: 'г. Москва, ул. Тестовая, д. 1',
rating: 4.5,
reviewsCount: 10,
dealsCount: 25,
});
console.log('[Migration] ✓ Company created:', company.fullName);
// Создать нового пользователя с правильной кодировкой UTF-8
console.log('[Migration] Creating test user...');
const user = await User.create({
email: 'admin@test-company.ru',
password: 'SecurePass123!',
firstName: 'Иван',
lastName: 'Иванов',
position: 'Директор',
phone: '+7 (999) 123-45-67',
companyId: company._id,
});
console.log('[Migration] ✓ User created:', user.firstName, user.lastName);
// Обновить существующие mock компании
console.log('[Migration] Updating existing companies...');
const updates = [
{ inn: '7707083894', updates: { companySize: '51-250', partnerGeography: ['moscow', 'russia_all'] } },
{ inn: '7707083895', updates: { companySize: '500+', partnerGeography: ['moscow', 'russia_all'] } },
{ inn: '7707083896', updates: { companySize: '11-50', partnerGeography: ['moscow', 'russia_all'] } },
{ inn: '7707083897', updates: { companySize: '51-250', partnerGeography: ['moscow', 'russia_all'] } },
{ inn: '7707083898', updates: { companySize: '251-500', partnerGeography: ['moscow', 'russia_all'] } },
];
for (const item of updates) {
await Company.updateOne({ inn: item.inn }, { $set: item.updates });
console.log(`[Migration] ✓ Company updated: INN ${item.inn}`);
}
console.log('[Migration] ✅ Test user migration completed!');
} catch (error) {
console.error('[Migration] ❌ Error:', error.message);
throw error;
}
};
module.exports = { recreateTestUser };
// Run directly if called as script
if (require.main === module) {
const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/procurement_db';
mongoose.connect(mongoUri, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).then(async () => {
console.log('[Migration] Connected to MongoDB\n');
await recreateTestUser();
await mongoose.connection.close();
process.exit(0);
}).catch(err => {
console.error('[Migration] ❌ Error:', err.message);
process.exit(1);
});
}