-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
174 lines (153 loc) · 3.63 KB
/
server.js
File metadata and controls
174 lines (153 loc) · 3.63 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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
const express = require('express');
const sqlite3 = require('sqlite3').verbose();
const bodyParser = require('body-parser');
const fs = require('fs');
const path = require('path'); // Add this
const app = express();
const db = new sqlite3.Database(':memory:');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'public'))); // Serve static files from the 'public' directory
// Serve the HTML file at the root path
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
// Endpoint to run SQL queries
app.post('/run-sql', (req, res) => {
const sql = req.body.sql;
db.all(sql, [], (err, rows) => {
if (err) {
res.status(400).json({ error: err.message });
return;
}
res.json({
message: 'success',
data: rows
});
});
});
// Initialize the database and tables
const createTables = () => {
db.run(`
CREATE TABLE PhoneRecords (
record_id INTEGER PRIMARY KEY,
person_id INTEGER,
timestamp TEXT,
phone_number TEXT,
call_duration INTEGER,
call_type TEXT
);
`);
db.run(`
CREATE TABLE Clues (
clue_id INTEGER PRIMARY KEY,
description TEXT,
is_discovered INTEGER
);
`);
db.run(`
CREATE TABLE Relationships (
relationship_id INTEGER PRIMARY KEY,
person1_id INTEGER,
person2_id INTEGER,
description TEXT
);
`);
db.run(`
CREATE TABLE Persons (
person_id INTEGER PRIMARY KEY,
name TEXT,
role TEXT,
profile TEXT
);
`);
db.run(`
CREATE TABLE CaseDetails (
case_id INTEGER PRIMARY KEY,
description TEXT,
murder_weapon TEXT,
crime_scene_description TEXT,
forensic_evidence TEXT
);
`);
db.run(`
CREATE TABLE Alibis (
alibi_id INTEGER PRIMARY KEY,
person_id INTEGER,
alibi TEXT,
is_verified INTEGER
);
`);
db.run(`
CREATE TABLE Interviews (
interview_id INTEGER PRIMARY KEY,
person_id INTEGER,
transcript TEXT
);
`);
db.run(`
CREATE TABLE CameraFootage (
footage_id INTEGER PRIMARY KEY,
timestamp TEXT,
location TEXT,
person_id INTEGER,
description TEXT
);
`);
db.run(`
CREATE TABLE SecurityLog (
log_id INTEGER PRIMARY KEY,
timestamp TEXT,
person_id INTEGER,
action TEXT,
description TEXT
);
`);
db.run(`
CREATE TABLE Artifacts (
artifact_id INTEGER PRIMARY KEY,
name TEXT,
description TEXT,
location TEXT,
is_damaged INTEGER
);
`);
};
const insertInitialData = () => {
fs.readFile('storyline.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error reading storyline.txt:', err);
return;
}
db.exec(data, (err) => {
if (err) {
console.error('Error executing initial data:', err.message);
} else {
console.log('Initial data inserted successfully.');
}
});
});
};
db.serialize(() => {
createTables();
insertInitialData();
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
app.post('/execute-sql', (req, res) => {
const sql = req.body.sql;
console.log("Received SQL:", sql); // Log received SQL
db.all(sql, [], (err, rows) => {
if (err) {
console.error("SQL Error:", err.message); // Log SQL errors
res.status(400).json({ error: err.message });
return;
}
console.log("SQL Result:", rows); // Log SQL results
res.json({
message: 'success',
rows: rows
});
});
});