mass refactor
This commit is contained in:
43
scripts/add-hobbies-column.js
Normal file
43
scripts/add-hobbies-column.js
Normal file
@@ -0,0 +1,43 @@
|
||||
// add-hobbies-column.js
|
||||
// Скрипт для добавления колонки hobbies в таблицу profiles
|
||||
|
||||
const { Pool } = require('pg');
|
||||
|
||||
// Настройки подключения к базе данных
|
||||
const pool = new Pool({
|
||||
host: '192.168.0.102',
|
||||
port: 5432,
|
||||
database: 'telegram_tinder_bot',
|
||||
user: 'trevor',
|
||||
password: 'Cl0ud_1985!'
|
||||
});
|
||||
|
||||
async function addHobbiesColumn() {
|
||||
try {
|
||||
console.log('Подключение к базе данных...');
|
||||
const client = await pool.connect();
|
||||
|
||||
console.log('Добавление колонки hobbies в таблицу profiles...');
|
||||
|
||||
// SQL запрос для добавления колонки
|
||||
const sql = `
|
||||
ALTER TABLE profiles
|
||||
ADD COLUMN IF NOT EXISTS hobbies TEXT;
|
||||
`;
|
||||
|
||||
await client.query(sql);
|
||||
console.log('✅ Колонка hobbies успешно добавлена в таблицу profiles');
|
||||
|
||||
// Закрытие соединения
|
||||
client.release();
|
||||
await pool.end();
|
||||
console.log('Подключение к базе данных закрыто');
|
||||
} catch (error) {
|
||||
console.error('❌ Ошибка при добавлении колонки:', error);
|
||||
await pool.end();
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Запуск функции
|
||||
addHobbiesColumn();
|
||||
44
scripts/add-premium-columns-direct.js
Normal file
44
scripts/add-premium-columns-direct.js
Normal file
@@ -0,0 +1,44 @@
|
||||
// add-premium-columns.js
|
||||
// Скрипт для добавления колонок premium и premium_expires_at в таблицу users
|
||||
|
||||
const { Pool } = require('pg');
|
||||
|
||||
// Настройки подключения к базе данных - используем те же настройки, что и раньше
|
||||
const pool = new Pool({
|
||||
host: '192.168.0.102',
|
||||
port: 5432,
|
||||
database: 'telegram_tinder_bot',
|
||||
user: 'trevor',
|
||||
password: 'Cl0ud_1985!'
|
||||
});
|
||||
|
||||
async function addPremiumColumns() {
|
||||
try {
|
||||
console.log('Подключение к базе данных...');
|
||||
const client = await pool.connect();
|
||||
|
||||
console.log('Добавление колонок premium и premium_expires_at в таблицу users...');
|
||||
|
||||
// SQL запрос для добавления колонок
|
||||
const sql = `
|
||||
ALTER TABLE users
|
||||
ADD COLUMN IF NOT EXISTS premium BOOLEAN DEFAULT FALSE,
|
||||
ADD COLUMN IF NOT EXISTS premium_expires_at TIMESTAMP;
|
||||
`;
|
||||
|
||||
await client.query(sql);
|
||||
console.log('✅ Колонки premium и premium_expires_at успешно добавлены в таблицу users');
|
||||
|
||||
// Закрытие соединения
|
||||
client.release();
|
||||
await pool.end();
|
||||
console.log('Подключение к базе данных закрыто');
|
||||
} catch (error) {
|
||||
console.error('❌ Ошибка при добавлении колонок:', error);
|
||||
await pool.end();
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Запуск функции
|
||||
addPremiumColumns();
|
||||
40
scripts/add-premium-columns.js
Normal file
40
scripts/add-premium-columns.js
Normal file
@@ -0,0 +1,40 @@
|
||||
// add-premium-columns.js
|
||||
// Скрипт для добавления колонок premium и premium_expires_at в таблицу users
|
||||
|
||||
const { Client } = require('pg');
|
||||
|
||||
// Настройки подключения к базе данных
|
||||
const client = new Client({
|
||||
host: '192.168.0.102',
|
||||
port: 5432,
|
||||
user: 'trevor',
|
||||
password: 'Cl0ud_1985!',
|
||||
database: 'telegram_tinder_bot'
|
||||
});
|
||||
|
||||
async function addPremiumColumns() {
|
||||
try {
|
||||
await client.connect();
|
||||
console.log('Подключение к базе данных успешно установлено');
|
||||
|
||||
// SQL запрос для добавления колонок
|
||||
const sql = `
|
||||
ALTER TABLE users
|
||||
ADD COLUMN IF NOT EXISTS premium BOOLEAN DEFAULT FALSE,
|
||||
ADD COLUMN IF NOT EXISTS premium_expires_at TIMESTAMP;
|
||||
`;
|
||||
|
||||
await client.query(sql);
|
||||
console.log('Колонки premium и premium_expires_at успешно добавлены в таблицу users');
|
||||
|
||||
// Закрываем подключение
|
||||
await client.end();
|
||||
console.log('Подключение к базе данных закрыто');
|
||||
} catch (error) {
|
||||
console.error('Ошибка при добавлении колонок:', error);
|
||||
await client.end();
|
||||
}
|
||||
}
|
||||
|
||||
// Запуск функции
|
||||
addPremiumColumns();
|
||||
28
scripts/add-premium-columns.ts
Normal file
28
scripts/add-premium-columns.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
// add-premium-columns.ts
|
||||
// Скрипт для добавления колонок premium и premium_expires_at в таблицу users
|
||||
|
||||
import { query } from '../src/database/connection';
|
||||
|
||||
async function addPremiumColumns() {
|
||||
try {
|
||||
console.log('Добавление колонок premium и premium_expires_at в таблицу users...');
|
||||
|
||||
// SQL запрос для добавления колонок
|
||||
const sql = `
|
||||
ALTER TABLE users
|
||||
ADD COLUMN IF NOT EXISTS premium BOOLEAN DEFAULT FALSE,
|
||||
ADD COLUMN IF NOT EXISTS premium_expires_at TIMESTAMP;
|
||||
`;
|
||||
|
||||
await query(sql);
|
||||
console.log('✅ Колонки premium и premium_expires_at успешно добавлены в таблицу users');
|
||||
|
||||
process.exit(0);
|
||||
} catch (error) {
|
||||
console.error('❌ Ошибка при добавлении колонок:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Запуск функции
|
||||
addPremiumColumns();
|
||||
101
scripts/create_profile_fix.js
Normal file
101
scripts/create_profile_fix.js
Normal file
@@ -0,0 +1,101 @@
|
||||
// Исправленный код для создания профиля
|
||||
const { Client } = require('pg');
|
||||
const { v4: uuidv4 } = require('uuid');
|
||||
|
||||
// Получаем аргументы из командной строки
|
||||
const args = process.argv.slice(2);
|
||||
const telegramId = args[0];
|
||||
const name = args[1];
|
||||
const age = parseInt(args[2]);
|
||||
const gender = args[3];
|
||||
const city = args[4];
|
||||
const bio = args[5];
|
||||
const photoFileId = args[6];
|
||||
|
||||
// Проверяем, что все необходимые аргументы предоставлены
|
||||
if (!telegramId || !name || !age || !gender || !city || !bio || !photoFileId) {
|
||||
console.error('Необходимо указать все параметры: telegramId, name, age, gender, city, bio, photoFileId');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Устанавливаем соединение с базой данных
|
||||
const client = new Client({
|
||||
host: '192.168.0.102',
|
||||
port: 5432,
|
||||
user: 'trevor',
|
||||
password: 'Cl0ud_1985!',
|
||||
database: 'telegram_tinder_bot'
|
||||
});
|
||||
|
||||
async function createProfile() {
|
||||
try {
|
||||
await client.connect();
|
||||
|
||||
// Шаг 1: Создаем или обновляем пользователя
|
||||
const userResult = await client.query(`
|
||||
INSERT INTO users (telegram_id, username, first_name, last_name)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
ON CONFLICT (telegram_id) DO UPDATE SET
|
||||
username = EXCLUDED.username,
|
||||
first_name = EXCLUDED.first_name,
|
||||
last_name = EXCLUDED.last_name
|
||||
RETURNING id
|
||||
`, [parseInt(telegramId), null, name, null]);
|
||||
|
||||
const userId = userResult.rows[0].id;
|
||||
|
||||
// Шаг 2: Создаем профиль
|
||||
const profileId = uuidv4();
|
||||
const now = new Date();
|
||||
const interestedIn = gender === 'male' ? 'female' : 'male';
|
||||
|
||||
const columns = [
|
||||
'id', 'user_id', 'name', 'age', 'gender', 'interested_in',
|
||||
'bio', 'city', 'photos', 'is_verified',
|
||||
'is_visible', 'created_at', 'updated_at'
|
||||
].join(', ');
|
||||
|
||||
const values = [
|
||||
profileId, userId, name, age, gender, interestedIn,
|
||||
bio, city, JSON.stringify([photoFileId]),
|
||||
false, true, now, now
|
||||
];
|
||||
|
||||
const placeholders = values.map((_, i) => `$${i + 1}`).join(', ');
|
||||
|
||||
await client.query(`
|
||||
INSERT INTO profiles (${columns})
|
||||
VALUES (${placeholders})
|
||||
`, values);
|
||||
|
||||
console.log('Профиль успешно создан!');
|
||||
|
||||
// Возвращаем информацию о созданном профиле
|
||||
return {
|
||||
userId,
|
||||
profileId,
|
||||
name,
|
||||
age,
|
||||
gender,
|
||||
interestedIn,
|
||||
bio,
|
||||
city,
|
||||
photos: [photoFileId]
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Ошибка при создании профиля:', error);
|
||||
throw error;
|
||||
} finally {
|
||||
await client.end();
|
||||
}
|
||||
}
|
||||
|
||||
createProfile()
|
||||
.then(profile => {
|
||||
console.log('Созданный профиль:', profile);
|
||||
process.exit(0);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Создание профиля не удалось:', error);
|
||||
process.exit(1);
|
||||
});
|
||||
62
scripts/migrate-sync.js
Normal file
62
scripts/migrate-sync.js
Normal file
@@ -0,0 +1,62 @@
|
||||
// migrate-sync.js
|
||||
// Этот скрипт создает записи о миграциях в таблице pgmigrations без применения изменений
|
||||
// Используется для синхронизации существующей базы с миграциями
|
||||
|
||||
const { Client } = require('pg');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Подключение к базе данных
|
||||
const client = new Client({
|
||||
host: '192.168.0.102',
|
||||
port: 5432,
|
||||
database: 'telegram_tinder_bot',
|
||||
user: 'trevor',
|
||||
password: 'Cl0ud_1985!'
|
||||
});
|
||||
|
||||
async function syncMigrations() {
|
||||
try {
|
||||
console.log('Подключение к базе данных...');
|
||||
await client.connect();
|
||||
|
||||
// Создаем таблицу миграций, если её нет
|
||||
await client.query(`
|
||||
CREATE TABLE IF NOT EXISTS pgmigrations (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
run_on TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
||||
)
|
||||
`);
|
||||
|
||||
// Получаем список файлов миграций
|
||||
const migrationsDir = path.join(__dirname, '../migrations');
|
||||
const files = fs.readdirSync(migrationsDir)
|
||||
.filter(file => file.endsWith('.js'))
|
||||
.sort();
|
||||
|
||||
// Проверяем, какие миграции уже записаны
|
||||
const { rows: existingMigrations } = await client.query('SELECT name FROM pgmigrations');
|
||||
const existingNames = existingMigrations.map(m => m.name);
|
||||
|
||||
// Записываем новые миграции
|
||||
for (const file of files) {
|
||||
const migrationName = file.replace('.js', '');
|
||||
if (!existingNames.includes(migrationName)) {
|
||||
console.log(`Добавление записи о миграции: ${migrationName}`);
|
||||
await client.query('INSERT INTO pgmigrations(name) VALUES($1)', [migrationName]);
|
||||
} else {
|
||||
console.log(`Миграция ${migrationName} уже записана`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('✅ Синхронизация миграций завершена успешно');
|
||||
await client.end();
|
||||
} catch (error) {
|
||||
console.error('❌ Ошибка при синхронизации миграций:', error);
|
||||
await client.end();
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
syncMigrations();
|
||||
Reference in New Issue
Block a user