Files
tg_tinder_bot/scripts/legacy/testProfileViews.js
2025-09-18 14:19:49 +09:00

99 lines
4.3 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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