const {Client} = require('pg'); require('dotenv').config(); const db = new Client({ user: process.env.PG_USER, password: process.env.PG_PASSWORD, database: process.env.PG_DATABASE, host: process.env.PG_HOST, port: process.env.PG_PORT }); // create connection to database db.connect() .then(() => { console.log('Successfully connected to database'); // if connection is succesful create tables createTables() .catch((err) => { console.error('Error creating tables:', err); }); }) .catch((err) => { console.error('Error connecting to database: ', err); }) async function createTables() { try { // Create accounts table await db.query(` CREATE TABLE IF NOT EXISTS accounts ( id SERIAL PRIMARY KEY, username VARCHAR(255) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL ) `); // Create messages table await db.query(` CREATE TABLE IF NOT EXISTS messages ( id SERIAL PRIMARY KEY, content TEXT NOT NULL, username VARCHAR(50) NOT NULL, recipient VARCHAR(255) NOT NULL ) `); // Create contacts table await db.query(` CREATE TABLE IF NOT EXISTS contacts ( username TEXT NOT NULL, contact TEXT NOT NULL, status TEXT NOT NULL ) `); console.log('Tables created successfully'); } catch (err) { console.error('Error creating tables:', err); throw err; } } // function for checking if user exists async function isUserExists(username) { try { const query = 'SELECT COUNT(*) FROM accounts WHERE username = $1'; const result = await db.query(query, [username]); return result.rows[0].count > 0; } catch (err) { console.error('Error checking username:', err); throw err; } } // function for signup // function for putting user data to database async function insertUser(username, password){ const query = ` INSERT INTO accounts (username, password) VALUES ($1, $2) RETURNING *; `; try { const signupData = await db.query(query, [username, password]); console.log('Account created:', signupData.rows[0].username); } catch (err) { console.error('Error inserting data:', err.stack); throw err; } } async function changePassword(username, password) { try { await db.query( 'UPDATE accounts SET password = $1 WHERE username = $2', [password, username] ); } catch (err) { console.error('Failed to update password') throw err; } } module.exports = { db , insertUser, isUserExists, changePassword };