99 lines
4.3 KiB
JavaScript
99 lines
4.3 KiB
JavaScript
// Тестирование работы с таблицей 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();
|