87 lines
2.3 KiB
JavaScript
87 lines
2.3 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() {
|
|
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;
|
|
}
|
|
}
|
|
|
|
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,
|
|
};
|
|
|