@@ -27,7 +27,7 @@ class DBuser {
2727 load_db_login ( ) {
2828 // Get document, or throw exception on error
2929 try {
30- const doc = yaml . load ( fs . readFileSync ( "../.. /config/database.yml" ) ) ;
30+ const doc = yaml . load ( fs . readFileSync ( "./config/database.yml" ) ) ;
3131 return doc ;
3232 } catch ( e ) {
3333 console . log ( e ) ;
@@ -90,14 +90,14 @@ class DBuser {
9090 const client = await this . pool . connect ( ) ;
9191 try {
9292 if ( ( await this . check_table ( "users" ) ) == false ) {
93- // console.log("Running create_table")
93+ console . log ( "Running creating user table" ) ;
9494 await client . query ( "BEGIN" ) ;
9595 const query = `CREATE TABLE users (
9696 userid INTEGER PRIMARY KEY,
9797 joindate DATE NOT NULL,
9898 leavedate DATE,
9999 userleft BOOLEAN
100- ); ` ;
100+ )` ;
101101 await client . query ( query ) ;
102102 await client . query ( "COMMIT" ) ;
103103 }
@@ -114,21 +114,19 @@ class DBuser {
114114 async create_table_user_roles ( ) {
115115 const client = await this . pool . connect ( ) ;
116116 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" ) ;
130128 } catch ( ex ) {
131- console . log ( `Something wrong happend ${ ex } ` ) ;
129+ console . log ( `Something wrong happende: ${ ex } ` ) ;
132130 } finally {
133131 await client . query ( "ROLLBACK" ) ;
134132 client . release ( ) ;
@@ -170,12 +168,12 @@ class DBuser {
170168 // console.log("Running create_table")
171169 await client . query ( "BEGIN" ) ;
172170 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+ );` ;
179177 await client . query ( query ) ;
180178 await client . query ( "COMMIT" ) ;
181179 }
@@ -250,18 +248,18 @@ class DBuser {
250248 const client = await this . pool . connect ( ) ;
251249 try {
252250 await client . query ( "BEGIN" ) ;
253-
254251 let query = "SELECT max(rid) from user_roles" ;
255252 let result = await client . query ( query ) ;
256253
257254 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())" ;
259257 const values = [ count , userid , role ] ;
260258 result = await client . query ( query , values ) ;
261259
262260 await client . query ( "COMMIT" ) ;
263261 } catch ( ex ) {
264- console . log ( `Something wrong happend ${ ex } ` ) ;
262+ console . log ( `Something wrong happend when trying to add user role to table ${ ex } ` ) ;
265263 } finally {
266264 await client . query ( "ROLLBACK" ) ;
267265 client . release ( ) ;
@@ -275,8 +273,7 @@ class DBuser {
275273 try {
276274 await client . query ( "BEGIN" ) ;
277275 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` ;
280277 await client . query ( query , values ) ;
281278 await client . query ( "COMMIT" ) ;
282279 } catch ( ex ) {
@@ -456,6 +453,30 @@ class DBuser {
456453 // console.log("Client released successfully.")
457454 }
458455 }
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+ }
459480}
460481
461482module . exports = {
0 commit comments