-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelper.js
114 lines (103 loc) · 3.52 KB
/
helper.js
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
const db = require('./db');
const Helper = {
CheckRequestParams: (req, requiredParams) => {
for (const param of requiredParams) {
if (!req.body.hasOwnProperty(param)) {
return { status: 400, result: 'bad_request' };
}
}
return null;
},
GetPrivateKeyFromDB: async (user_id) => {
try {
const row = await new Promise((resolve, reject) => {
db.get("SELECT private_key FROM accounts WHERE user_id =?",
[user_id],
(err, row) => err? reject(err) : resolve(row));
});
return row;
} catch (error) {
console.error("An error has occurred - " + error);
return null;
}
},
ValidateSession: async (user_id, private_key) => {
const row = await Helper.GetPrivateKeyFromDB(user_id);
if (!row) {
return { status: 1, result: 'Error: user does not exist' };
}
if (row.private_key!== private_key) {
return { status: 1, result: 'wrong private key' };
}
return { status: 0, result: 'Success' };
},
GetFromDB: async (user_id, columns) => {
try {
const columnQuery = columns.join(', ');
const row = await new Promise((resolve, reject) => {
db.get(`SELECT ${columnQuery} FROM accounts WHERE user_id =?`,
[user_id],
(err, row) => err? reject(err) : resolve(row)
);
});
return row;
} catch (error) {
console.error("An error has occurred - " + error);
return null;
}
},
UpdateDB: async (user_id, updates) => {
try {
const updateKeys = Object.keys(updates);
const updateValues = updateKeys.map(key => updates[key]);
const updateQuery = updateKeys.reduce((query, key, index) => {
query += `${key} =?`;
if (index < updateKeys.length - 1) {
query += ', ';
}
return query;
}, '');
await new Promise((resolve, reject) => {
db.run(`UPDATE accounts SET ${updateQuery} WHERE user_id =?`,
[...updateValues, user_id],
(err) => err? reject(err) : resolve()
);
});
return { status: 0, result: 'Success' };
} catch (error) {
console.error("An error has occurred - " + error);
return { status: 500, result: 'internal_error' };
}
},
InsertIntoDB: async (table, columns, values) => {
try {
const columnQuery = columns.join(', ');
const valueQuery = values.map(() => '?').join(', ');
await new Promise((resolve, reject) => {
db.run(`INSERT INTO ${table}(${columnQuery}) VALUES(${valueQuery})`,
values,
(err) => err? reject(err) : resolve()
);
});
return { status: 0, result: "Success" };
} catch (error) {
console.error('Error inserting into database:', error);
return { status: 1, result: "Error" };
}
},
DeleteFromDB: async (table, column, value) => {
try {
await new Promise((resolve, reject) => {
db.run(`DELETE FROM ${table} WHERE ${column} =?`,
[value],
(err) => err? reject(err) : resolve()
);
});
return true;
} catch (error) {
console.error('Error deleting from database:', error);
return null;
}
}
};
module.exports = Helper;