Files
web-chat/backend/db.js
slawk0 bf8da0606c Remove unused files and improve code clarity
Deleted obsolete files, including icon.png and index.html. Refactored JavaScript code in signup.js and socket.js for better readability by adjusting indentation and format. Updated environment variables in .env and streamlined several routes and functions in index.js.
2024-10-14 15:40:08 +02:00

108 lines
2.7 KiB
JavaScript

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