Files
web-chat/backend/db.js
2024-08-26 13:52:43 +02:00

78 lines
2.0 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'))
.catch((err) => console.log('Error on connecting to database: ', err));
async function createTables() {
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
)
`);
}
createTables()
.catch((err) => {
console.error('Error creating tables:', 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 *;
`;
const values = [username, password];
try {
const signupData = await db .query(query, values);
console.log('Account created:', signupData.rows[0].username);
} catch (err) {
console.error('Error inserting data:', err.stack);
throw err;
}
}
module.exports = {
db ,
insertUser,
isUserExists,
};