V1.4.0 Completed
This update adds a handful of new features and readies the API for public use. Detailed changes below:
config.example.ts - Bumped version, added local testing options, added prefill data, changed default logging to false, moved long strings for help and rollhelp to longStrings.ts
db/initialize.ts (previously initDB.ts) - Relocated file for organization, added local options, added new command count and allowed guilds table, created stored procedure for counting commands
db/populateDefaults.ts - Fills in db with default values, adding admin's api key and populating the command count table
flags.ts - Centralized flags for dev/local modes
longStrings.ts - Moved all long string commands to here, contains help, rollhelp, apihelp, info, and privacy commands
mod.ts - Moved flags out into flags.ts, implemented local mode for development, implemented command counting for basic statistics, added info and privacy commands for user help, added more stats to the stats command, added api command, allowing users to allow or block api rolls from happening in their server, reformatted API code, using proper HTTP methods, makes sure api is allowed to roll into chosen guild, added delete endpoint to remove user's data from the database, added endpoint to allow the general public to generate their own api keys
PRIVACY.md - I got bored and wrote a privacy policy, detailing how little data is collected and how the user can have their data removed
README.md - Added new commands to README, updated API documentation, added delete endpoint, updated self hosting details
src/utils.ts - Bumped discordeno version
www/api - Built API website
www/home (previously located in www) - Moved for better organization, minor fixes, updated API details,
2021-02-12 20:26:33 -08:00
|
|
|
// This file will create all tables for the artificer schema
|
|
|
|
// DATA WILL BE LOST IF DB ALREADY EXISTS, RUN AT OWN RISK
|
|
|
|
|
2021-02-19 17:44:38 -08:00
|
|
|
import {
|
|
|
|
// MySQL deps
|
|
|
|
Client
|
|
|
|
} from "../deps.ts";
|
2021-01-14 05:47:18 -08:00
|
|
|
|
V1.4.0 Completed
This update adds a handful of new features and readies the API for public use. Detailed changes below:
config.example.ts - Bumped version, added local testing options, added prefill data, changed default logging to false, moved long strings for help and rollhelp to longStrings.ts
db/initialize.ts (previously initDB.ts) - Relocated file for organization, added local options, added new command count and allowed guilds table, created stored procedure for counting commands
db/populateDefaults.ts - Fills in db with default values, adding admin's api key and populating the command count table
flags.ts - Centralized flags for dev/local modes
longStrings.ts - Moved all long string commands to here, contains help, rollhelp, apihelp, info, and privacy commands
mod.ts - Moved flags out into flags.ts, implemented local mode for development, implemented command counting for basic statistics, added info and privacy commands for user help, added more stats to the stats command, added api command, allowing users to allow or block api rolls from happening in their server, reformatted API code, using proper HTTP methods, makes sure api is allowed to roll into chosen guild, added delete endpoint to remove user's data from the database, added endpoint to allow the general public to generate their own api keys
PRIVACY.md - I got bored and wrote a privacy policy, detailing how little data is collected and how the user can have their data removed
README.md - Added new commands to README, updated API documentation, added delete endpoint, updated self hosting details
src/utils.ts - Bumped discordeno version
www/api - Built API website
www/home (previously located in www) - Moved for better organization, minor fixes, updated API details,
2021-02-12 20:26:33 -08:00
|
|
|
import { LOCALMODE } from "../flags.ts";
|
|
|
|
import config from "../config.ts";
|
2021-01-14 05:47:18 -08:00
|
|
|
|
|
|
|
// Log into the MySQL DB
|
|
|
|
const dbClient = await new Client().connect({
|
V1.4.0 Completed
This update adds a handful of new features and readies the API for public use. Detailed changes below:
config.example.ts - Bumped version, added local testing options, added prefill data, changed default logging to false, moved long strings for help and rollhelp to longStrings.ts
db/initialize.ts (previously initDB.ts) - Relocated file for organization, added local options, added new command count and allowed guilds table, created stored procedure for counting commands
db/populateDefaults.ts - Fills in db with default values, adding admin's api key and populating the command count table
flags.ts - Centralized flags for dev/local modes
longStrings.ts - Moved all long string commands to here, contains help, rollhelp, apihelp, info, and privacy commands
mod.ts - Moved flags out into flags.ts, implemented local mode for development, implemented command counting for basic statistics, added info and privacy commands for user help, added more stats to the stats command, added api command, allowing users to allow or block api rolls from happening in their server, reformatted API code, using proper HTTP methods, makes sure api is allowed to roll into chosen guild, added delete endpoint to remove user's data from the database, added endpoint to allow the general public to generate their own api keys
PRIVACY.md - I got bored and wrote a privacy policy, detailing how little data is collected and how the user can have their data removed
README.md - Added new commands to README, updated API documentation, added delete endpoint, updated self hosting details
src/utils.ts - Bumped discordeno version
www/api - Built API website
www/home (previously located in www) - Moved for better organization, minor fixes, updated API details,
2021-02-12 20:26:33 -08:00
|
|
|
hostname: LOCALMODE ? config.db.localhost : config.db.host,
|
2021-01-14 05:47:18 -08:00
|
|
|
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;`);
|
V1.4.0 Completed
This update adds a handful of new features and readies the API for public use. Detailed changes below:
config.example.ts - Bumped version, added local testing options, added prefill data, changed default logging to false, moved long strings for help and rollhelp to longStrings.ts
db/initialize.ts (previously initDB.ts) - Relocated file for organization, added local options, added new command count and allowed guilds table, created stored procedure for counting commands
db/populateDefaults.ts - Fills in db with default values, adding admin's api key and populating the command count table
flags.ts - Centralized flags for dev/local modes
longStrings.ts - Moved all long string commands to here, contains help, rollhelp, apihelp, info, and privacy commands
mod.ts - Moved flags out into flags.ts, implemented local mode for development, implemented command counting for basic statistics, added info and privacy commands for user help, added more stats to the stats command, added api command, allowing users to allow or block api rolls from happening in their server, reformatted API code, using proper HTTP methods, makes sure api is allowed to roll into chosen guild, added delete endpoint to remove user's data from the database, added endpoint to allow the general public to generate their own api keys
PRIVACY.md - I got bored and wrote a privacy policy, detailing how little data is collected and how the user can have their data removed
README.md - Added new commands to README, updated API documentation, added delete endpoint, updated self hosting details
src/utils.ts - Bumped discordeno version
www/api - Built API website
www/home (previously located in www) - Moved for better organization, minor fixes, updated API details,
2021-02-12 20:26:33 -08:00
|
|
|
await dbClient.execute(`DROP TABLE IF EXISTS allowed_guilds;`);
|
2021-01-14 05:47:18 -08:00
|
|
|
await dbClient.execute(`DROP TABLE IF EXISTS roll_log;`);
|
V1.4.0 Completed
This update adds a handful of new features and readies the API for public use. Detailed changes below:
config.example.ts - Bumped version, added local testing options, added prefill data, changed default logging to false, moved long strings for help and rollhelp to longStrings.ts
db/initialize.ts (previously initDB.ts) - Relocated file for organization, added local options, added new command count and allowed guilds table, created stored procedure for counting commands
db/populateDefaults.ts - Fills in db with default values, adding admin's api key and populating the command count table
flags.ts - Centralized flags for dev/local modes
longStrings.ts - Moved all long string commands to here, contains help, rollhelp, apihelp, info, and privacy commands
mod.ts - Moved flags out into flags.ts, implemented local mode for development, implemented command counting for basic statistics, added info and privacy commands for user help, added more stats to the stats command, added api command, allowing users to allow or block api rolls from happening in their server, reformatted API code, using proper HTTP methods, makes sure api is allowed to roll into chosen guild, added delete endpoint to remove user's data from the database, added endpoint to allow the general public to generate their own api keys
PRIVACY.md - I got bored and wrote a privacy policy, detailing how little data is collected and how the user can have their data removed
README.md - Added new commands to README, updated API documentation, added delete endpoint, updated self hosting details
src/utils.ts - Bumped discordeno version
www/api - Built API website
www/home (previously located in www) - Moved for better organization, minor fixes, updated API details,
2021-02-12 20:26:33 -08:00
|
|
|
await dbClient.execute(`DROP PROCEDURE IF EXISTS INC_CNT;`);
|
|
|
|
await dbClient.execute(`DROP TABLE IF EXISTS command_cnt;`);
|
2021-01-14 05:47:18 -08:00
|
|
|
console.log("Tables dropped");
|
|
|
|
|
V1.4.0 Completed
This update adds a handful of new features and readies the API for public use. Detailed changes below:
config.example.ts - Bumped version, added local testing options, added prefill data, changed default logging to false, moved long strings for help and rollhelp to longStrings.ts
db/initialize.ts (previously initDB.ts) - Relocated file for organization, added local options, added new command count and allowed guilds table, created stored procedure for counting commands
db/populateDefaults.ts - Fills in db with default values, adding admin's api key and populating the command count table
flags.ts - Centralized flags for dev/local modes
longStrings.ts - Moved all long string commands to here, contains help, rollhelp, apihelp, info, and privacy commands
mod.ts - Moved flags out into flags.ts, implemented local mode for development, implemented command counting for basic statistics, added info and privacy commands for user help, added more stats to the stats command, added api command, allowing users to allow or block api rolls from happening in their server, reformatted API code, using proper HTTP methods, makes sure api is allowed to roll into chosen guild, added delete endpoint to remove user's data from the database, added endpoint to allow the general public to generate their own api keys
PRIVACY.md - I got bored and wrote a privacy policy, detailing how little data is collected and how the user can have their data removed
README.md - Added new commands to README, updated API documentation, added delete endpoint, updated self hosting details
src/utils.ts - Bumped discordeno version
www/api - Built API website
www/home (previously located in www) - Moved for better organization, minor fixes, updated API details,
2021-02-12 20:26:33 -08:00
|
|
|
console.log("Attempting to create table command_cnt");
|
|
|
|
await dbClient.execute(`
|
|
|
|
CREATE TABLE command_cnt (
|
|
|
|
command char(20) NOT NULL,
|
|
|
|
count bigint unsigned NOT NULL DEFAULT 0,
|
|
|
|
PRIMARY KEY (command),
|
|
|
|
UNIQUE KEY command_cnt_command_UNIQUE (command)
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
|
`);
|
|
|
|
console.log("Table created");
|
|
|
|
|
|
|
|
console.log("Attempt creating increment Stored Procedure");
|
|
|
|
await dbClient.execute(`
|
|
|
|
CREATE PROCEDURE INC_CNT(
|
|
|
|
IN cmd CHAR(20)
|
|
|
|
)
|
|
|
|
BEGIN
|
|
|
|
declare oldcnt bigint unsigned;
|
|
|
|
set oldcnt = (SELECT count FROM command_cnt WHERE command = cmd);
|
|
|
|
UPDATE command_cnt SET count = oldcnt + 1 WHERE command = cmd;
|
|
|
|
END
|
|
|
|
`);
|
|
|
|
console.log("Stored Procedure created");
|
|
|
|
|
2021-01-14 05:47:18 -08:00
|
|
|
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,
|
2021-01-18 08:50:22 -08:00
|
|
|
resultid bigint NULL,
|
2021-01-14 05:47:18 -08:00
|
|
|
result longtext NOT NULL,
|
2021-01-18 08:50:22 -08:00
|
|
|
createdAt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
2021-01-14 05:47:18 -08:00
|
|
|
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");
|
|
|
|
|
V1.4.0 Completed
This update adds a handful of new features and readies the API for public use. Detailed changes below:
config.example.ts - Bumped version, added local testing options, added prefill data, changed default logging to false, moved long strings for help and rollhelp to longStrings.ts
db/initialize.ts (previously initDB.ts) - Relocated file for organization, added local options, added new command count and allowed guilds table, created stored procedure for counting commands
db/populateDefaults.ts - Fills in db with default values, adding admin's api key and populating the command count table
flags.ts - Centralized flags for dev/local modes
longStrings.ts - Moved all long string commands to here, contains help, rollhelp, apihelp, info, and privacy commands
mod.ts - Moved flags out into flags.ts, implemented local mode for development, implemented command counting for basic statistics, added info and privacy commands for user help, added more stats to the stats command, added api command, allowing users to allow or block api rolls from happening in their server, reformatted API code, using proper HTTP methods, makes sure api is allowed to roll into chosen guild, added delete endpoint to remove user's data from the database, added endpoint to allow the general public to generate their own api keys
PRIVACY.md - I got bored and wrote a privacy policy, detailing how little data is collected and how the user can have their data removed
README.md - Added new commands to README, updated API documentation, added delete endpoint, updated self hosting details
src/utils.ts - Bumped discordeno version
www/api - Built API website
www/home (previously located in www) - Moved for better organization, minor fixes, updated API details,
2021-02-12 20:26:33 -08:00
|
|
|
console.log("Attempting to create table allowed_guilds");
|
|
|
|
await dbClient.execute(`
|
|
|
|
CREATE TABLE allowed_guilds (
|
|
|
|
guildid bigint unsigned NOT NULL,
|
|
|
|
createdAt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
active tinyint(1) NOT NULL DEFAULT 0,
|
|
|
|
banned tinyint(1) NOT NULL DEFAULT 0,
|
|
|
|
PRIMARY KEY (guildid),
|
|
|
|
UNIQUE KEY allowed_guilds_guildid_UNIQUE (guildid)
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
|
`);
|
|
|
|
console.log("Table created");
|
|
|
|
|
2021-01-14 05:47:18 -08:00
|
|
|
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,
|
V1.4.0 Completed
This update adds a handful of new features and readies the API for public use. Detailed changes below:
config.example.ts - Bumped version, added local testing options, added prefill data, changed default logging to false, moved long strings for help and rollhelp to longStrings.ts
db/initialize.ts (previously initDB.ts) - Relocated file for organization, added local options, added new command count and allowed guilds table, created stored procedure for counting commands
db/populateDefaults.ts - Fills in db with default values, adding admin's api key and populating the command count table
flags.ts - Centralized flags for dev/local modes
longStrings.ts - Moved all long string commands to here, contains help, rollhelp, apihelp, info, and privacy commands
mod.ts - Moved flags out into flags.ts, implemented local mode for development, implemented command counting for basic statistics, added info and privacy commands for user help, added more stats to the stats command, added api command, allowing users to allow or block api rolls from happening in their server, reformatted API code, using proper HTTP methods, makes sure api is allowed to roll into chosen guild, added delete endpoint to remove user's data from the database, added endpoint to allow the general public to generate their own api keys
PRIVACY.md - I got bored and wrote a privacy policy, detailing how little data is collected and how the user can have their data removed
README.md - Added new commands to README, updated API documentation, added delete endpoint, updated self hosting details
src/utils.ts - Bumped discordeno version
www/api - Built API website
www/home (previously located in www) - Moved for better organization, minor fixes, updated API details,
2021-02-12 20:26:33 -08:00
|
|
|
deleteCode char(10) NULL,
|
2021-01-18 08:50:22 -08:00
|
|
|
email char(255) NULL,
|
2021-01-14 05:47:18 -08:00
|
|
|
createdAt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
active tinyint(1) NOT NULL DEFAULT 1,
|
|
|
|
banned tinyint(1) NOT NULL DEFAULT 0,
|
|
|
|
PRIMARY KEY (userid),
|
2021-01-18 08:50:22 -08:00
|
|
|
UNIQUE KEY all_keys_userid_UNIQUE (userid),
|
|
|
|
UNIQUE KEY all_keys_apiKey_UNIQUE (apiKey),
|
|
|
|
UNIQUE KEY all_keys_email_UNIQUE (email)
|
2021-01-14 05:47:18 -08:00
|
|
|
) 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!");
|