This repository was archived by the owner on Oct 15, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbaseControll.js
More file actions
151 lines (140 loc) · 4.17 KB
/
Copy pathbaseControll.js
File metadata and controls
151 lines (140 loc) · 4.17 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
const sqlite3 = require('sqlite3').verbose();
var fs = require('fs');
let db;
function sanitize(sql) {
const col = /;/g;
const eq = /=/g;
const ap = /'/g;
// const ap2 = /"/g;
// const lb = /(/g;
// const rb = /)/g;
let str = sql.replace(col, '').replace(eq, '').replace(ap, '');
return str;
}
function connect() {
// open database in memory
db = new sqlite3.Database('./db/planets.db', (err) => {
if (err) {
return console.error(err.message);
}
console.log('Connected to the SQlite database.');
});
}
function close() {
// close the database connection
db.close((err) => {
if (err) {
return console.error(err.message);
}
console.log('Closed the database connection.');
});
}
function init() {
let superCommand = fs.readFileSync('BD.sql').toString();
db.exec(superCommand, err => {
if (err) throw err;
else console.log("init OK");
});
}
exports.handleG = function (type, params, callback) {
let sql = '';
switch (type) {
case 'listObjects':
sql = 'SELECT Place, Name, Id, List_Id FROM Object JOIN List_Position ON Id = Object_Id AND List_Id = '
+ sanitize(params.Id);
break;
case 'objects':
sql = 'SELECT * FROM Object';
break;
case 'objectFull':
sql = 'SELECT ';
break;
case 'users':
sql = 'SELECT * FROM DB_User';
break;
case 'child':
sql = 'SELECT * FROM object_child_list WHERE Host = ' + params.Id;
break;
case 'exo_info':
sql = 'SELECT * FROM object_exo_info WHERE Id = ' + params.Id;
}
console.log(sql);
connect();
db.all(sql, [], (err, rows) => {
callback(err, rows);
});
close();
};
exports.getAllData = function (tableName ,callback) {
connect();
console.log('got asked for ' + tableName);
sql = 'select * from ' + tableName;
ret = db.all(sql, [], (err, rows) => {
// if(err) {throw err;}
callback(err, rows);
});
close();
};
let addRecord = function (tableName, record, callback) {
connect();
let sql = 'INSERT INTO ' + tableName + '(' +
sanitize(Object.keys(record).join(', ')) + ') VALUES ("' +
sanitize(Object.values(record).join('", "')) + '")';
console.log(sql);
db.run(sql, function (err) {
console.log(this);
callback(err, this.lastID);
});
close();
};
exports.delRecord = function (tableName, record, callback) {
connect();
let sql = 'DELETE FROM ' + tableName + ' WHERE Id = ' + record.Id;
if(tableName == 'List') {
let sql2 = 'DELETE FROM List_Position WHERE List_Id = ' + record.Id;
console.log(sql2);
db.run(sql2);
}
if(tableName == 'Object') {
let sql2 = 'DELETE FROM Hierarchy WHERE Object_Id = ' + record.Id + ' OR Object_Host_Id =' + record.Id;
console.log(sql2);
db.run(sql2);
}
console.log(sql);
db.run(sql);
close();
};
exports.handleP = function (arg, callback) {
let sql = arg.insertString;
let args = arg.obj;
switch (sql) {
case 'remListItem':
connect();
sql = 'DELETE FROM List_Position WHERE Object_Id = ' + args.Id + ' AND List_Id = ' + args.List_Id;
db.run('UPDATE List_Position SET Place = Place - 1 WHERE Place > ? AND List_Id = ?', [args.Place, args.List_Id], (err) => {
if (err) console.log(err.message);
});
break;
case 'Object':
let host = args.Host;
delete args.Host;
addRecord(sql, args, (err, id) => {
let sql2 = 'INSERT INTO Hierarchy (Object_Id, Object_Host_Id) VALUES (' + id + ", " + host + ')';
console.log(sql2);
db.run(sql2);
});
return;
case 'DB_User':
case 'List':
case 'Organization':
addRecord(sql, args, (err, id) => {});
return;
default:
connect();
}
console.log(sql);
db.exec(sql, (err) => {
callback(err);
});
close();
};