Repository navigation
Expand file tree
/
Copy pathdbquery.js
More file actions
90 lines (62 loc) · 2.38 KB
/
Copy pathdbquery.js
File metadata and controls
90 lines (62 loc) · 2.38 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
const db = require('better-sqlite3')('main.db');
const { isValid } = require('date-fns');
const { z } = require('zod');
function createReminderTableIfNotExists() {
db.prepare(`
CREATE TABLE IF NOT EXISTS calendar (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT,
message TEXT,
sent INTEGER DEFAULT 0
)
`).run();
}
module.exports = (target="",dyd={})=>{
return new Promise(async (resolve, reject) => {
try {
switch(target){
case "set-reminder":
createReminderTableIfNotExists()
const reminderDate = new Date(dyd.rdate);
if (!isValid(reminderDate)) {
throw new Error("Invalid reminder date");
}
const result = db.prepare(`
INSERT INTO calendar (date, message, sent)
VALUES (?, ?, 0)
`).run(reminderDate.toISOString(), dyd.message || "TEST: This reminder should trigger immediately");
resolve({
id: result.lastInsertRowid,
date: dyd.rdate
})
break;
case "list-reminders":
createReminderTableIfNotExists()
const reminders = db.prepare(`
SELECT date, message
FROM calendar WHERE sent = 0
`).all();
resolve(reminders)
break;
case "execute-query":
const query = dyd.query;
if (!query) {
throw new Error("Query is required");
}
const stmt = db.prepare(query);
let queryResult;
if (query.trim().toLowerCase().startsWith("select")) {
queryResult = stmt.all();
} else {
queryResult = stmt.run();
}
resolve(queryResult)
break;
default:
reject("Unknown target: " + target);
}
} catch (err) {
reject(err);
}
})
}