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.
108 lines
2.7 KiB
JavaScript
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,
|
|
};
|