@@ -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
}
@@ -114,21 +114,19 @@ class DBuser {
114
114
async create_table_user_roles ( ) {
115
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" ) ;
120
- const query = `CREATE TABLE user_roles (
121
- rid INTEGER PRIMARY KEY,
122
- userid INTEGER NOT NULL,
123
- role varchar(64),
124
- FOREIGN KEY (userid)
125
- REFERENCES users (userid)
126
- );` ;
127
- await client . query ( query ) ;
128
- await client . query ( "COMMIT" ) ;
129
- }
117
+ // if ((await this.check_table("user_roles")) == false) {
118
+
119
+ await client . query ( "BEGIN" ) ;
120
+ const query = `CREATE TABLE user_roles (
121
+ rid INTEGER PRIMARY KEY,
122
+ userid BIGINT NOT NULL,
123
+ role varchar(64),
124
+ time_assigned TIMESTAMP
125
+ )` ;
126
+ await client . query ( query ) ;
127
+ await client . query ( "COMMIT" ) ;
130
128
} catch ( ex ) {
131
- console . log ( `Something wrong happend ${ ex } ` ) ;
129
+ console . log ( `Something wrong happende: ${ ex } ` ) ;
132
130
} finally {
133
131
await client . query ( "ROLLBACK" ) ;
134
132
client . release ( ) ;
@@ -170,12 +168,12 @@ class DBuser {
170
168
// console.log("Running create_table")
171
169
await client . query ( "BEGIN" ) ;
172
170
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
- );` ;
171
+ pid INTEGER PRIMARY KEY,
172
+ userid INTEGER NOT NULL,
173
+ permission varchar(64),
174
+ FOREIGN KEY (userid)
175
+ REFERENCES users (userid)
176
+ );` ;
179
177
await client . query ( query ) ;
180
178
await client . query ( "COMMIT" ) ;
181
179
}
@@ -250,18 +248,18 @@ class DBuser {
250
248
const client = await this . pool . connect ( ) ;
251
249
try {
252
250
await client . query ( "BEGIN" ) ;
253
-
254
251
let query = "SELECT max(rid) from user_roles" ;
255
252
let result = await client . query ( query ) ;
256
253
257
254
const count = result . rows [ 0 ] [ "max" ] + 1 ;
258
- query = "INSERT INTO user_roles (RID, USERID, ROLE) VALUES ($1,$2,$3)" ;
255
+ query =
256
+ "INSERT INTO user_roles (RID, USERID, ROLE, TIME_ASSIGNED) VALUES ($1,$2,$3,NOW())" ;
259
257
const values = [ count , userid , role ] ;
260
258
result = await client . query ( query , values ) ;
261
259
262
260
await client . query ( "COMMIT" ) ;
263
261
} catch ( ex ) {
264
- console . log ( `Something wrong happend ${ ex } ` ) ;
262
+ console . log ( `Something wrong happend when trying to add user role to table ${ ex } ` ) ;
265
263
} finally {
266
264
await client . query ( "ROLLBACK" ) ;
267
265
client . release ( ) ;
@@ -275,8 +273,7 @@ class DBuser {
275
273
try {
276
274
await client . query ( "BEGIN" ) ;
277
275
const values = [ userid , role ] ;
278
- const query = `DELETE FROM user_roles
279
- where userid = $1 and role = $2` ;
276
+ const query = `DELETE FROM user_roles where userid = $1 and role = $2` ;
280
277
await client . query ( query , values ) ;
281
278
await client . query ( "COMMIT" ) ;
282
279
} catch ( ex ) {
@@ -456,6 +453,30 @@ class DBuser {
456
453
// console.log("Client released successfully.")
457
454
}
458
455
}
456
+
457
+ async checkTimeAssigned ( ) {
458
+ const client = await this . pool . connect ( ) ;
459
+ try {
460
+ // Query to select rows where time_assigned is older than 1 hour
461
+ const query = `
462
+ SELECT * FROM user_roles WHERE time_assigned < NOW() - interval '1 year'
463
+ ` ;
464
+
465
+ const result = await client . query ( query ) ;
466
+
467
+ const old_roles = result . rows . map ( ( row ) => ( {
468
+ role_name : row . role ,
469
+ userid : row . userid ,
470
+ } ) ) ;
471
+
472
+ return old_roles ;
473
+ } catch ( error ) {
474
+ console . error ( error ) ;
475
+ return [ ] ;
476
+ } finally {
477
+ client . release ( ) ;
478
+ }
479
+ }
459
480
}
460
481
461
482
module . exports = {
0 commit comments