register + login + mdp hash
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
require('dotenv').config();
|
||||
const { Pool } = require('pg');
|
||||
|
||||
const pool = new Pool
|
||||
({
|
||||
user: process.env.POSTGRES_USER,
|
||||
host: process.env.POSTGRES_HOST,
|
||||
database: process.env.POSTGRES_DB,
|
||||
password: process.env.POSTGRES_PASSWORD,
|
||||
port: 5432,
|
||||
});
|
||||
|
||||
async function waitForDb(retries = 10, delay = 2000)
|
||||
{
|
||||
for (let i = 0; i < retries; i++)
|
||||
{
|
||||
try
|
||||
{
|
||||
await pool.query('SELECT 1');
|
||||
console.log('Database is ready!');
|
||||
return ;
|
||||
}
|
||||
catch (err)
|
||||
{
|
||||
await new Promise(r => setTimeout(r, delay));
|
||||
}
|
||||
}
|
||||
throw new Error('Could not connect to database after multiple attempts');
|
||||
}
|
||||
|
||||
async function createTables()
|
||||
{
|
||||
try
|
||||
{
|
||||
await pool.query(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
username VARCHAR(50) UNIQUE NOT NULL,
|
||||
password_hash TEXT NOT NULL,
|
||||
email VARCHAR(100),
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS messages(
|
||||
id SERIAL PRIMARY KEY,
|
||||
sender_id INT REFERENCES users(id),
|
||||
received_id INT REFERENCES users(id),
|
||||
content TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS friendship (
|
||||
id_user1 INT NOT NULL,
|
||||
id_user2 INT NOT NULL,
|
||||
status VARCHAR(20) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
CHECK (id_user1 < id_user2),
|
||||
PRIMARY KEY (id_user1, id_user2),
|
||||
FOREIGN KEY (id_user1) REFERENCES users(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (id_user2) REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
`);
|
||||
console.log('Tables created!');
|
||||
}
|
||||
catch (err)
|
||||
{
|
||||
console.error('Error creating tables:', err);
|
||||
}
|
||||
}
|
||||
|
||||
async function query(text, params)
|
||||
{
|
||||
return (pool.query(text, params));
|
||||
}
|
||||
|
||||
module.exports =
|
||||
{
|
||||
waitForDb,
|
||||
createTables,
|
||||
query
|
||||
};
|
||||
Reference in New Issue
Block a user