Files
web-chat/backend/db.js
2024-09-14 18:40:06 +02:00

102 lines
2.6 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 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
)
`);
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
};