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 successful 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, };