@@ -27,7 +27,7 @@ class DBuser {
27
27
load_db_login ( ) {
28
28
// Get document, or throw exception on error
29
29
try {
30
- const doc = yaml . load ( fs . readFileSync ( "../.. /config/database.yml" ) ) ;
30
+ const doc = yaml . load ( fs . readFileSync ( "./config/database.yml" ) ) ;
31
31
return doc ;
32
32
} catch ( e ) {
33
33
console . log ( e ) ;
@@ -90,14 +90,14 @@ class DBuser {
90
90
const client = await this . pool . connect ( ) ;
91
91
try {
92
92
if ( ( await this . check_table ( "users" ) ) == false ) {
93
- // console.log("Running create_table")
93
+ console . log ( "Running creating user table" ) ;
94
94
await client . query ( "BEGIN" ) ;
95
95
const query = `CREATE TABLE users (
96
96
userid INTEGER PRIMARY KEY,
97
97
joindate DATE NOT NULL,
98
98
leavedate DATE,
99
99
userleft BOOLEAN
100
- ); ` ;
100
+ )` ;
101
101
await client . query ( query ) ;
102
102
await client . query ( "COMMIT" ) ;
103
103
}
@@ -112,23 +112,28 @@ class DBuser {
112
112
113
113
// Creates the user roles table
114
114
async create_table_user_roles ( ) {
115
- const client = await this . pool . connect ( ) ;
115
+ const client = await this . pool . connect ( ) ;
116
116
try {
117
- if ( ( await this . check_table ( "user_roles" ) ) == false ) {
118
- // console.log("Running create_table")
119
- await client . query ( "BEGIN" ) ;
117
+ // if ((await this.check_table("user_roles")) == false) {
118
+
119
+ await client . query ( "BEGIN" ) ;
120
120
const query = `CREATE TABLE user_roles (
121
121
rid INTEGER PRIMARY KEY,
122
- userid INTEGER NOT NULL,
122
+ userid BIGINT NOT NULL,
123
123
role varchar(64),
124
- FOREIGN KEY (userid)
125
- REFERENCES users (userid)
126
- );` ;
124
+ time_assigned TIMESTAMP
125
+ )` ;
127
126
await client . query ( query ) ;
128
127
await client . query ( "COMMIT" ) ;
129
- }
128
+ // } else {
129
+ // console.log("Deleting create_user_roles_table");
130
+ // await client.query("BEGIN");
131
+ // const query = `DROP TABLE user_roles`;
132
+ // await client.query(query);
133
+ // await client.query("COMMIT");
134
+ // }
130
135
} catch ( ex ) {
131
- console . log ( `Something wrong happend ${ ex } ` ) ;
136
+ console . log ( `Something wrong happende: ${ ex } ` ) ;
132
137
} finally {
133
138
await client . query ( "ROLLBACK" ) ;
134
139
client . release ( ) ;
@@ -170,12 +175,12 @@ class DBuser {
170
175
// console.log("Running create_table")
171
176
await client . query ( "BEGIN" ) ;
172
177
const query = `CREATE TABLE user_permissions (
173
- pid INTEGER PRIMARY KEY,
174
- userid INTEGER NOT NULL,
175
- permission varchar(64),
176
- FOREIGN KEY (userid)
177
- REFERENCES users (userid)
178
- );` ;
178
+ pid INTEGER PRIMARY KEY,
179
+ userid INTEGER NOT NULL,
180
+ permission varchar(64),
181
+ FOREIGN KEY (userid)
182
+ REFERENCES users (userid)
183
+ );` ;
179
184
await client . query ( query ) ;
180
185
await client . query ( "COMMIT" ) ;
181
186
}
@@ -250,33 +255,31 @@ class DBuser {
250
255
const client = await this . pool . connect ( ) ;
251
256
try {
252
257
await client . query ( "BEGIN" ) ;
253
-
254
258
let query = "SELECT max(rid) from user_roles" ;
255
259
let result = await client . query ( query ) ;
256
260
257
261
const count = result . rows [ 0 ] [ "max" ] + 1 ;
258
- query = "INSERT INTO user_roles (RID, USERID, ROLE) VALUES ($1,$2,$3)" ;
262
+ query = "INSERT INTO user_roles (RID, USERID, ROLE, TIME_ASSIGNED ) VALUES ($1,$2,$3,NOW() )" ;
259
263
const values = [ count , userid , role ] ;
260
264
result = await client . query ( query , values ) ;
261
265
262
266
await client . query ( "COMMIT" ) ;
263
267
} catch ( ex ) {
264
- console . log ( `Something wrong happend ${ ex } ` ) ;
268
+ console . log ( `Something wrong happend when trying to add user role to table ${ ex } ` ) ;
265
269
} finally {
266
270
await client . query ( "ROLLBACK" ) ;
267
271
client . release ( ) ;
268
272
// console.log("Client released successfully.")
269
273
}
270
- }
274
+ }
271
275
272
276
// Removing a user role
273
277
async remove_user_role ( userid , role ) {
274
278
const client = await this . pool . connect ( ) ;
275
279
try {
276
280
await client . query ( "BEGIN" ) ;
277
281
const values = [ userid , role ] ;
278
- const query = `DELETE FROM user_roles
279
- where userid = $1 and role = $2` ;
282
+ const query = `DELETE FROM user_roles where userid = $1 and role = $2` ;
280
283
await client . query ( query , values ) ;
281
284
await client . query ( "COMMIT" ) ;
282
285
} catch ( ex ) {
@@ -456,6 +459,31 @@ class DBuser {
456
459
// console.log("Client released successfully.")
457
460
}
458
461
}
462
+
463
+ async checkTimeAssigned ( ) {
464
+ const client = await this . pool . connect ( ) ;
465
+ try {
466
+ // Query to select rows where time_assigned is older than 1 hour
467
+ const query = `
468
+ SELECT * FROM user_roles WHERE time_assigned < NOW() - interval '1 year'
469
+ ` ;
470
+
471
+ const result = await client . query ( query ) ;
472
+
473
+ const old_roles = result . rows . map ( row => ( {
474
+ role_name : row . role ,
475
+ userid : row . userid
476
+ } ) ) ;
477
+
478
+ return old_roles ;
479
+ } catch ( error ) {
480
+ console . error ( error ) ;
481
+ return old_roles ;
482
+ } finally {
483
+ client . release ( ) ;
484
+ }
485
+ }
486
+
459
487
}
460
488
461
489
module . exports = {
0 commit comments