Описание изменений

This commit is contained in:
2025-03-03 20:43:58 +03:00
parent 13e240f871
commit 8650456fc0
58 changed files with 4451 additions and 3390 deletions

95
backend/db.js Normal file
View File

@@ -0,0 +1,95 @@
const { Pool } = require('pg');
require('dotenv').config();
// Создаем пул соединений с базой данных
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false
});
// Проверяем подключение к базе данных
pool.query('SELECT NOW()', (err, res) => {
if (err) {
console.error('Ошибка подключения к базе данных:', err);
console.log('Переключение на временное хранилище данных в памяти...');
// Если не удалось подключиться к базе данных, используем временное хранилище
module.exports = createInMemoryStorage();
} else {
console.log('Успешное подключение к базе данных:', res.rows[0]);
}
});
// Функция для выполнения SQL-запросов
const query = (text, params) => {
return pool.query(text, params);
};
// Экспортируем функции для работы с базой данных
module.exports = {
query,
pool
};
// Функция для создания временного хранилища данных в памяти
function createInMemoryStorage() {
console.log('Используется временное хранилище данных в памяти');
const users = [];
let userId = 1;
// Эмуляция функции query для работы с пользователями
const inMemoryQuery = async (text, params) => {
console.log('SQL query (in-memory):', text, 'Params:', params);
// Эмуляция запроса SELECT * FROM users WHERE address = $1
if (text.includes('SELECT * FROM users WHERE address = $1')) {
const address = params[0];
const user = users.find(u => u.address === address);
return { rows: user ? [user] : [] };
}
// Эмуляция запроса SELECT * FROM users WHERE email = $1
if (text.includes('SELECT * FROM users WHERE email = $1')) {
const email = params[0];
const user = users.find(u => u.email === email);
return { rows: user ? [user] : [] };
}
// Эмуляция запроса INSERT INTO users
if (text.includes('INSERT INTO users')) {
let newUser;
if (text.includes('address')) {
newUser = { id: userId++, address: params[0], created_at: new Date(), is_admin: false };
} else if (text.includes('email')) {
newUser = { id: userId++, email: params[0], created_at: new Date(), is_admin: false };
}
if (newUser) {
users.push(newUser);
return { rows: [newUser] };
}
}
return { rows: [] };
};
return {
query: inMemoryQuery,
pool: {
query: (text, params, callback) => {
if (callback) {
try {
const result = inMemoryQuery(text, params);
callback(null, result);
} catch (err) {
callback(err);
}
} else {
return inMemoryQuery(text, params);
}
}
}
};
}