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