прямые импорты
This commit is contained in:
@@ -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);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user