// Тестирование работы с таблицей profile_views const { Pool } = require('pg'); require('dotenv').config(); const pool = new Pool({ host: process.env.DB_HOST, port: parseInt(process.env.DB_PORT || '5432'), database: process.env.DB_NAME, user: process.env.DB_USERNAME, password: process.env.DB_PASSWORD }); // Функция для тестирования записи просмотра профиля async function testRecordProfileView(viewerId, viewedProfileId) { const client = await pool.connect(); try { console.log(`Запись просмотра профиля: ${viewerId} просмотрел ${viewedProfileId}`); // Получаем UUID пользователей const viewerResult = await client.query('SELECT id FROM users WHERE telegram_id = $1', [viewerId]); if (viewerResult.rows.length === 0) { console.log(`Пользователь с telegram_id ${viewerId} не найден, создаём нового пользователя`); const newUserResult = await client.query(` INSERT INTO users (telegram_id, username, first_name, last_name) VALUES ($1, $2, $3, $4) RETURNING id `, [viewerId, `user_${viewerId}`, `Имя ${viewerId}`, `Фамилия ${viewerId}`]); var viewerUuid = newUserResult.rows[0].id; } else { var viewerUuid = viewerResult.rows[0].id; } const viewedResult = await client.query('SELECT id FROM users WHERE telegram_id = $1', [viewedProfileId]); if (viewedResult.rows.length === 0) { console.log(`Пользователь с telegram_id ${viewedProfileId} не найден, создаём нового пользователя`); const newUserResult = await client.query(` INSERT INTO users (telegram_id, username, first_name, last_name) VALUES ($1, $2, $3, $4) RETURNING id `, [viewedProfileId, `user_${viewedProfileId}`, `Имя ${viewedProfileId}`, `Фамилия ${viewedProfileId}`]); var viewedUuid = newUserResult.rows[0].id; } else { var viewedUuid = viewedResult.rows[0].id; } console.log(`UUID просматривающего: ${viewerUuid}`); console.log(`UUID просматриваемого: ${viewedUuid}`); // Записываем просмотр await client.query(` INSERT INTO profile_views (viewer_id, viewed_profile_id, view_type, view_date) VALUES ($1, $2, $3, NOW()) ON CONFLICT (viewer_id, viewed_profile_id) DO UPDATE SET view_date = NOW(), view_type = $3 `, [viewerUuid, viewedUuid, 'browse']); console.log('Просмотр профиля успешно записан'); // Получаем список просмотренных профилей const viewedProfiles = await client.query(` SELECT v.viewed_profile_id, v.view_date, u.telegram_id FROM profile_views v JOIN users u ON u.id = v.viewed_profile_id WHERE v.viewer_id = $1 ORDER BY v.view_date DESC `, [viewerUuid]); console.log('Список просмотренных профилей:'); viewedProfiles.rows.forEach((row, index) => { console.log(`${index + 1}. ID: ${row.telegram_id}, просмотрен: ${row.view_date}`); }); return true; } catch (error) { console.error('Ошибка записи просмотра профиля:', error); return false; } finally { client.release(); } } // Запускаем тест async function runTest() { try { // Тестируем запись просмотра профиля await testRecordProfileView(123456, 789012); await testRecordProfileView(123456, 345678); await testRecordProfileView(789012, 123456); console.log('Тесты завершены успешно'); } catch (error) { console.error('Ошибка при выполнении тестов:', error); } finally { await pool.end(); } } runTest();