-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdb.js
More file actions
130 lines (120 loc) · 2.61 KB
/
Copy pathdb.js
File metadata and controls
130 lines (120 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
const { Pool } = require('pg');
const dotenv = require('dotenv');
const moment = require('moment');
const bcrypt = require('bcrypt');
dotenv.config();
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: true
});
pool.on('connect', () => {
console.log('connected to the db');
});
/**
* Create Tables
*/
const createTables = (queryText) => {
return new Promise((resolve, reject) => {
pool.query(queryText)
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
})
})
}
/**
* Drop Tables
*/
const dropTables = () => {
const queryText = 'DROP TABLE IF EXISTS users CASCADE';
pool.query(queryText)
.then((res) => {
console.log(res);
pool.end();
})
.catch((err) => {
console.log(err);
pool.end();
});
}
/*
Delete test user account
*/
const deleteUser = () => {
const queryText = 'DELETE FROM users WHERE email=$1';
pool.query(queryText, ["jumakiwaka@teamwork.com"])
.then((res) => {
console.log(res);
pool.end();
})
.catch((err) => {
console.log(err);
pool.end();
});
}
/*
Create admin user Account
*/
const createSU = () =>{
const queryText = `CREATE TABLE IF NOT EXISTS
users(
id SERIAL PRIMARY KEY,
firstname VARCHAR(128) NOT NULL,
lastname VARCHAR(128) NOT NULL,
email VARCHAR(128) NOT NULL UNIQUE,
password VARCHAR(128) NOT NULL,
gender VARCHAR(30),
jobrole VARCHAR(128) NOT NULL,
department VARCHAR(128) NOT NULL,
address VARCHAR(128) NOT NULL,
is_admin BOOLEAN DEFAULT FALSE,
created_date TIMESTAMP,
modified_date TIMESTAMP
)`;
pool.query(queryText)
.then(res => {
console.log(res);
const createSUQuery = `INSERT INTO
users(firstname, lastname, email, password, gender, jobrole, department, address, is_admin, created_date, modified_date)
VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9, $10, $11)`;
const pass = bcrypt.hashSync("nothingcanstopme", 7);
const data =[
"Juma",
"Kiwaka",
`juju@admin.com`,
pass,
"male",
"CTO",
"IT",
"123, Juja street",
true,
moment(new Date()),
moment(new Date())
];
pool.query(createSUQuery, data).then(res => {
console.log(res);
pool.end();
})
.catch(error => {
console.log(error);
pool.end();
})
})
.catch(error => {
console.log(error);
pool.end();
})
}
pool.on('remove', () => {
console.log('client removed');
// process.exit(0);
});
module.exports = {
createTables,
dropTables,
deleteUser,
createSU
};
require('make-runnable');