прямые импорты

This commit is contained in:
2025-10-14 13:44:18 +03:00
parent 7937be469b
commit 2b5e5564c8

View File

@@ -1,6 +1,4 @@
const router = require('express').Router();
const fs = require('fs');
const path = require('path');
const timer = (time = 300) => (req, res, next) => setTimeout(next, time);
@@ -15,44 +13,13 @@ router.use((req, res, next) => {
router.use(timer());
// Загружаем моки из JSON файлов
const loadMockData = (filename) => {
try {
const filePath = path.join(__dirname, 'mocks', filename);
// Проверяем существование файла
if (!fs.existsSync(filePath)) {
console.error(`Файл ${filename} не найден по пути: ${filePath}`);
return {};
}
const data = fs.readFileSync(filePath, 'utf8');
// Проверяем, что файл не пустой
if (!data || data.trim() === '') {
console.error(`Файл ${filename} пустой`);
return {};
}
const parsedData = JSON.parse(data);
console.log(`Успешно загружен файл ${filename}`);
return parsedData;
} catch (error) {
console.error(`Ошибка загрузки ${filename}:`, error.message);
return {};
}
};
// Загружаем моки через прямые импорты
const userMocks = require('./mocks/user.json');
const companyMocks = require('./mocks/companies.json');
const productMocks = require('./mocks/products.json');
const searchMocks = require('./mocks/search.json');
const authMocks = require('./mocks/auth.json');
// Загружаем все моки
const userMocks = loadMockData('user.json');
const companyMocks = loadMockData('companies.json');
const productMocks = loadMockData('products.json');
const searchMocks = loadMockData('search.json');
const authMocks = loadMockData('auth.json');
// Логируем загруженные данные для отладки
console.log('SearchMocks loaded:', searchMocks);
console.log('Suggestions:', searchMocks.suggestions);
// Вспомогательные функции для генерации динамических данных
const generateTimestamp = () => Date.now();
@@ -60,18 +27,14 @@ const generateDate = (daysAgo) => new Date(Date.now() - 86400000 * daysAgo).toIS
// Функция для замены плейсхолдеров в данных
const processMockData = (data) => {
// Проверяем, что данные существуют
if (data === undefined || data === null) {
console.warn('processMockData: получены undefined или null данные');
return data;
}
const timestamp = generateTimestamp();
const jsonString = JSON.stringify(data);
// Проверяем, что JSON.stringify вернул валидную строку
if (jsonString === undefined || jsonString === null) {
console.warn('processMockData: JSON.stringify вернул undefined или null');
return data;
}
@@ -100,8 +63,7 @@ const processMockData = (data) => {
try {
return JSON.parse(processedData);
} catch (error) {
console.error('processMockData: ошибка при парсинге JSON:', error);
return data; // Возвращаем исходные данные в случае ошибки
return data;
}
};
@@ -124,12 +86,15 @@ router.post('/auth/login', (req, res) => {
});
}
// Проверяем, что данные загружены
if (!authMocks?.mockAuthResponse) {
console.error('authMocks.mockAuthResponse не загружен');
return res.status(500).json({
error: 'Internal Server Error',
message: 'Ошибка загрузки данных аутентификации'
message: 'Ошибка загрузки данных аутентификации',
details: {
authMocksExists: !!authMocks,
authMocksType: typeof authMocks,
authMocksKeys: authMocks ? Object.keys(authMocks) : null
}
});
}
@@ -405,19 +370,11 @@ router.get('/search', (req, res) => {
limit = 20
} = req.query;
console.log('Search query:', query);
console.log('Search params:', req.query);
const companies = processMockData(companyMocks.mockCompanies);
console.log('Companies loaded:', companies.length);
console.log('First company:', companies[0]);
let filtered = [...companies];
// Поиск по тексту
if (query) {
const q = query.toLowerCase().trim();
console.log('Searching for:', q);
filtered = filtered.filter(c => {
const fullName = (c.fullName || '').toLowerCase();
@@ -426,20 +383,12 @@ router.get('/search', (req, res) => {
const slogan = (c.slogan || '').toLowerCase();
const legalAddress = (c.legalAddress || '').toLowerCase();
const matches = fullName.includes(q) ||
shortName.includes(q) ||
industry.includes(q) ||
slogan.includes(q) ||
legalAddress.includes(q);
if (matches) {
console.log('Found match:', c.shortName, 'in', { fullName, shortName, industry, slogan, legalAddress });
}
return matches;
return fullName.includes(q) ||
shortName.includes(q) ||
industry.includes(q) ||
slogan.includes(q) ||
legalAddress.includes(q);
});
console.log('Filtered results:', filtered.length);
}
// Фильтр по отраслям
@@ -545,14 +494,11 @@ router.get('/search/suggestions', (req, res) => {
const { q } = req.query;
const suggestions = searchMocks.suggestions || [];
console.log('Suggestions loaded:', suggestions);
console.log('Query:', q);
const filtered = q
? suggestions.filter(s => s.toLowerCase().includes(q.toLowerCase()))
: suggestions.slice(0, 10); // Показываем только первые 10 если нет запроса
: suggestions.slice(0, 10);
console.log('Filtered suggestions:', filtered);
res.status(200).json(filtered);
});