-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.js
96 lines (76 loc) · 2.73 KB
/
index.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
require("dotenv").config();
const mysql = require("mysql2"),
fs = require("fs");
validateDatabase().then(() => {
let foundBot = fs.existsSync(`${__dirname}/bot/index.js`),
foundDashboard = fs.existsSync(`${__dirname}/dashboard/build/index.js`);
if (foundBot || foundDashboard) {
if (foundBot && ["both", "bot"].includes(process.env.RUN))
require("./bot/index.js");
if (foundDashboard && ["both", "dashboard"].includes(process.env.RUN))
import("./dashboard/build/index.js");
} else {
console.log("Bot and dashboard not found");
}
});
function validateDatabase() {
return new Promise(async (resolve) => {
console.log(`[MySQL] Connecting to ${process.env.DATABASE_USER}@${process.env.DATABASE_HOST} ...`);
let connection = mysql.createConnection({
host : process.env.DATABASE_HOST,
user : process.env.DATABASE_USER,
password : process.env.DATABASE_PASSWORD,
database : process.env.DATABASE_DATABASE
});
connection.connect(async (err) => {
if (err) {
console.log("[MySQL] Connection failed");
console.log(err);
return;
}
console.log("[MySQL] Connected");
await new Promise((resolve) => connection.query(`CREATE TABLE IF NOT EXISTS tickets (
id VARCHAR(12) NOT NULL,
userId VARCHAR(32) NOT NULL,
authorId VARCHAR(32) NOT NULL,
dmChannelId VARCHAR(32) NOT NULL,
reason TEXT,
comment TEXT,
attachedUsers TEXT,
createdTimestamp VARCHAR(32) NOT NULL,
closedTimestamp VARCHAR(32),
closedAuthorId VARCHAR(32),
messages TEXT,
notifyUserIds TEXT,
PRIMARY KEY (id)
)`, (err) => err ? console.log(err) : resolve()));
await new Promise((resolve) => connection.query(`CREATE TABLE IF NOT EXISTS sessions (
id VARCHAR(40) NOT NULL,
access_token VARCHAR(32) NOT NULL,
refresh_token VARCHAR(32) NOT NULL,
PRIMARY KEY (id)
)`, (err) => err ? console.log(err) : resolve()));
await new Promise((resolve) => connection.query(`CREATE TABLE IF NOT EXISTS blocked (
id VARCHAR(32) NOT NULL,
authorId VARCHAR(32) NOT NULL,
reason TEXT,
blockedTimestamp VARCHAR(32) NOT NULL,
PRIMARY KEY (id)
)`, (err) => err ? console.log(err) : resolve()));
await new Promise((resolve) => connection.query(`CREATE TABLE IF NOT EXISTS snippets (
name VARCHAR(128) NOT NULL,
content TEXT NOT NULL,
PRIMARY KEY (name)
)`, (err) => err ? console.log(err) : resolve()));
await new Promise((resolve) => connection.query(`CREATE TABLE IF NOT EXISTS authorized (
id VARCHAR(32) NOT NULL,
type VARCHAR(4) NOT NULL,
PRIMARY KEY (id)
)`, (err) => err ? console.log(err) : resolve()));
connection.end(() => {
console.log("[MySQL] Validated");
resolve();
});
});
});
}