mirror of
https://github.com/Burn-E99/TheArtificer.git
synced 2026-01-04 19:47:54 -05:00
config.example.ts updated to include full documentation of all options. initDB.ts updated with minor fixes. mod.ts updated command handling, upgraded api to have secured access, key and channel management, minor bug fixes, and rate limiting. solver.ts updated with minor fix to prevent discord formatting from completely and utterly breaking. README updated.
74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
import { Client } from "https://deno.land/x/mysql/mod.ts";
|
|
|
|
import config from "./config.ts";
|
|
|
|
// Log into the MySQL DB
|
|
const dbClient = await new Client().connect({
|
|
hostname: config.db.host,
|
|
port: config.db.port,
|
|
username: config.db.username,
|
|
password: config.db.password,
|
|
});
|
|
|
|
console.log("Attempting to create DB");
|
|
await dbClient.execute(`CREATE SCHEMA IF NOT EXISTS ${config.db.name};`);
|
|
await dbClient.execute(`USE ${config.db.name}`);
|
|
console.log("DB created");
|
|
|
|
console.log("Attempt to drop all tables");
|
|
await dbClient.execute(`DROP TABLE IF EXISTS allowed_channels;`);
|
|
await dbClient.execute(`DROP TABLE IF EXISTS all_keys;`);
|
|
await dbClient.execute(`DROP TABLE IF EXISTS roll_log;`);
|
|
console.log("Tables dropped");
|
|
|
|
console.log("Attempting to create table roll_log");
|
|
await dbClient.execute(`
|
|
CREATE TABLE roll_log (
|
|
id int unsigned NOT NULL AUTO_INCREMENT,
|
|
input text NOT NULL,
|
|
resultid bigint NULL,
|
|
result longtext NOT NULL,
|
|
createdAt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
api tinyint(1) NOT NULL,
|
|
error tinyint(1) NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY roll_log_id_UNIQUE (id),
|
|
UNIQUE KEY roll_log_resultid_UNIQUE (resultid)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
`);
|
|
console.log("Table created");
|
|
|
|
console.log("Attempting to create table all_keys");
|
|
await dbClient.execute(`
|
|
CREATE TABLE all_keys (
|
|
userid bigint unsigned NOT NULL,
|
|
apiKey char(25) NOT NULL,
|
|
email char(255) NULL,
|
|
createdAt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
active tinyint(1) NOT NULL DEFAULT 1,
|
|
banned tinyint(1) NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (userid),
|
|
UNIQUE KEY all_keys_userid_UNIQUE (userid),
|
|
UNIQUE KEY all_keys_apiKey_UNIQUE (apiKey),
|
|
UNIQUE KEY all_keys_email_UNIQUE (email)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
`);
|
|
console.log("Table created");
|
|
|
|
console.log("Attempting to create table allowed_channels");
|
|
await dbClient.execute(`
|
|
CREATE TABLE allowed_channels (
|
|
userid bigint unsigned NOT NULL,
|
|
channelid bigint unsigned NOT NULL,
|
|
createdAt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
active tinyint(1) NOT NULL DEFAULT 1,
|
|
banned tinyint(1) NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (userid, channelid),
|
|
CONSTRAINT allowed_channels_userid_FK FOREIGN KEY (userid) REFERENCES all_keys (userid) ON DELETE RESTRICT ON UPDATE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
`);
|
|
console.log("Table created");
|
|
|
|
await dbClient.close();
|
|
console.log("Done!");
|