Skip to content

Commit 8ff4803

Browse files
committed
hope
1 parent 1dea128 commit 8ff4803

File tree

11 files changed

+617
-23
lines changed

11 files changed

+617
-23
lines changed

.dockerignore

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# Install Data
2-
node_modules
3-
4-
# Build
5-
dist/
6-
7-
# Logs
8-
logs/
9-
10-
#Webserver stuff
11-
images/
12-
13-
#Docker
1+
# Install Data
2+
node_modules
3+
4+
# Build
5+
dist/
6+
7+
# Logs
8+
logs/
9+
10+
#Webserver stuff
11+
images/
12+
13+
#Docker
1414
docker_env/

package-lock.json

Lines changed: 270 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
"js-yaml": "4.1.0",
2626
"json5": "2.2.0",
2727
"minecraft-block-info": "github:XboxBedrock/minecraft-block-info",
28+
"mysql-backup": "^1.0.0",
2829
"mysql2": "2.3.0",
30+
"mysqldump": "^3.2.0",
2931
"node-fetch": "^3.2.1",
3032
"node-gyp": "^9.0.0",
3133
"nps-utils": "1.7.0",
@@ -77,7 +79,8 @@
7779
"start": "nps",
7880
"prepare": "husky install",
7981
"postinstall": "patch-package",
80-
"typeorm": "node --experimental-specifier-resolution=node --loader ts-node/esm ./node_modules/typeorm/cli.js"
82+
"typeorm": "node --experimental-specifier-resolution=node --loader ts-node/esm ./node_modules/typeorm/cli.js",
83+
"t2sql": "node ./scripts/typeorm2sql.cjs"
8184
},
8285
"config": {
8386
"commitizen": {

scripts/backup.cjs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const mysqldump = require('mysqldump')
2+
3+
//@ts-check
4+
5+
const exec = require('child_process').exec;
6+
7+
const fs = require('fs')
8+
const JSON5 = require('json5')
9+
const path = require('path')
10+
11+
const content = fs.readFileSync(path.join(__dirname, "../config/config.json5"), {encoding: "utf-8"})
12+
const config = JSON5.parse(content)
13+
14+
let opts = {}
15+
16+
async function main() {
17+
18+
if (config.database.type == "mysql" || config.database.type == "mariadb"){
19+
opts = {
20+
host: process.env.DB_HOST || config.database.host,
21+
database: process.env.DB_NAME|| config.database.name,
22+
user: process.env.DB_USER ||config.database.user,
23+
password: process.env.DB_PASS || config.database.pass,
24+
}
25+
26+
const fileName = "sqlBackups/" + new Date(Date.now()).getTime() + ".sql"
27+
28+
await mysqldump({connection: opts, dumpToFile: fileName, compressFile: false})
29+
30+
exec(`cat ${fileName} | curl -F 'sprunge=<-' http://sprunge.us`, function (error, stdout, stderr) {
31+
console.log('stdout: ' + stdout);
32+
console.log('stderr: ' + stderr);
33+
if (error !== null) {
34+
console.log('exec error: ' + error);
35+
}
36+
})
37+
}
38+
}
39+
40+
main()

scripts/dumb.sh

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
1-
npm run typeorm migration:generate -- -n Snowflake19
2-
3-
npm run typeorm schema:log
4-
5-
npm run typeorm query "SELECT * from advanced_builders"
6-
71
npm run typeorm query "DESCRIBE advanced_builders"
82

93
apk --no-cache add curl
104

11-
cd src
5+
node scripts/backup.cjs
126

13-
cd migrations
7+
npm run typeorm query "source ./sqlScripts/Snowflake191658519013499_UP.sql"
148

15-
cat *-Snowflake19*.ts | curl -F 'sprunge=<-' http://sprunge.us
9+
npm run typeorm query "DESCRIBE advanced_builders"
1610

1711
echo done

scripts/typeorm2sql.cjs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//@ts-check
2+
const _ = require('lodash');
3+
4+
const ts = require("typescript")
5+
6+
const fs = require("fs")
7+
8+
function exitLog(text) {
9+
console.log(text)
10+
process.exit(-1)
11+
}
12+
13+
const file = process.argv[2]
14+
15+
if (!file) exitLog("I need a file dum dum")
16+
17+
if (!(_.endsWith(file, "cts") || _.endsWith(file, "ts"))) exitLog("How about you give me a typescript file!")
18+
19+
const sourceCode = fs.readFileSync(file, 'utf-8')
20+
21+
if (!sourceCode) exitLog("invalid source code")
22+
23+
let tsSourceFile = ts.createSourceFile(
24+
__filename,
25+
sourceCode,
26+
ts.ScriptTarget.Latest
27+
);
28+
29+
let filename = "err"
30+
31+
try {
32+
//@ts-ignore
33+
if (!(['1', '2'].every(key => Object.keys(tsSourceFile.statements[1].members).includes(key)))) return exitLog("Tree invalid")
34+
//@ts-ignore
35+
console.log(`Found ${tsSourceFile.statements[1].name.escapedText}`)
36+
37+
//@ts-ignore
38+
filename = tsSourceFile.statements[1].name.escapedText
39+
40+
} catch {
41+
exitLog("Tree invalid")
42+
}
43+
44+
function getStatements(member) {
45+
let finalSql = ""
46+
const keys = Object.keys(member.body.statements).slice(0, -4)
47+
48+
for (const key of keys) {
49+
const currNode = member.body.statements[key].expression.expression.arguments['0'].rawText
50+
finalSql += currNode + ";\n"
51+
}
52+
53+
return finalSql
54+
55+
}
56+
//@ts-ignore
57+
const up = getStatements(tsSourceFile.statements[1].members['1'])
58+
//@ts-ignore
59+
const down = getStatements(tsSourceFile.statements[1].members['2'])
60+
61+
fs.writeFileSync(`sqlScripts/${filename}_UP.sql`, up)
62+
63+
fs.writeFileSync(`sqlScripts/${filename}_DOWN.sql`, down)
64+
65+
console.log(`Wrote sqlScripts/${filename}_UP.sql and sqlScripts/${filename}_DOWN.sql!`)
66+

scripts/typeorm2sql.cts

Whitespace-only changes.

sqlBackups/e.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Backup dir
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
ALTER TABLE "moderation_menus" RENAME TO "temporary_moderation_menus";
2+
CREATE TABLE "moderation_menus" ("member" varchar(18) PRIMARY KEY NOT NULL, "message" varchar(18) NOT NULL, "message_text" varchar(2000) NOT NULL, "punishments" text NOT NULL, "offenses" integer NOT NULL, "current_word" varchar NOT NULL);
3+
INSERT INTO "moderation_menus"("member", "message", "message_text", "punishments", "offenses", "current_word") SELECT "member", "message", "message_text", "punishments", "offenses", "current_word" FROM "temporary_moderation_menus";
4+
DROP TABLE "temporary_moderation_menus";
5+
ALTER TABLE "action_logs" RENAME TO "temporary_action_logs";
6+
CREATE TABLE "action_logs" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "action" varchar NOT NULL, "member" varchar(18) NOT NULL, "executor" varchar(18) NOT NULL, "reason" varchar(1024) NOT NULL, "reason_image" varchar, "length" integer, "channel" varchar(18) NOT NULL, "message" varchar(18) NOT NULL, "notification" varchar(18), "created_at" datetime NOT NULL DEFAULT (datetime('now')), "deleted_at" datetime, "deleter" varchar(18), "delete_reason" varchar(1024), "punishment_id" integer, CONSTRAINT "REL_1b2ce2a6f60a2cea07c0c73e9a" UNIQUE ("punishment_id"), CONSTRAINT "FK_1b2ce2a6f60a2cea07c0c73e9a0" FOREIGN KEY ("punishment_id") REFERENCES "timed_punishments" ("id") ON DELETE SET NULL ON UPDATE NO ACTION);
7+
INSERT INTO "action_logs"("id", "action", "member", "executor", "reason", "reason_image", "length", "channel", "message", "notification", "created_at", "deleted_at", "deleter", "delete_reason", "punishment_id") SELECT "id", "action", "member", "executor", "reason", "reason_image", "length", "channel", "message", "notification", "created_at", "deleted_at", "deleter", "delete_reason", "punishment_id" FROM "temporary_action_logs";
8+
DROP TABLE "temporary_action_logs";
9+
ALTER TABLE "reminders" RENAME TO "temporary_reminders";
10+
CREATE TABLE "reminders" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "channel" varchar(18) NOT NULL, "message" varchar(1024) NOT NULL, "interval" varchar NOT NULL, "created_at" datetime NOT NULL DEFAULT (datetime('now')), "next_fire_date" integer NOT NULL);
11+
INSERT INTO "reminders"("id", "channel", "message", "interval", "created_at", "next_fire_date") SELECT "id", "channel", "message", "interval", "created_at", "next_fire_date" FROM "temporary_reminders";
12+
DROP TABLE "temporary_reminders";
13+
ALTER TABLE "timed_punishments" RENAME TO "temporary_timed_punishments";
14+
CREATE TABLE "timed_punishments" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "member" varchar(18) NOT NULL, "type" varchar NOT NULL, "length" integer NOT NULL, "created_at" datetime NOT NULL DEFAULT (datetime('now')));
15+
INSERT INTO "timed_punishments"("id", "member", "type", "length", "created_at") SELECT "id", "member", "type", "length", "created_at" FROM "temporary_timed_punishments";
16+
DROP TABLE "temporary_timed_punishments";
17+
ALTER TABLE "teampoint_users" RENAME TO "temporary_teampoint_users";
18+
CREATE TABLE "teampoint_users" ("userId" varchar(18) PRIMARY KEY NOT NULL, "commandUsagesToday" integer NOT NULL DEFAULT (0));
19+
INSERT INTO "teampoint_users"("userId", "commandUsagesToday") SELECT "userId", "commandUsagesToday" FROM "temporary_teampoint_users";
20+
DROP TABLE "temporary_teampoint_users";
21+
ALTER TABLE "advanced_builders" RENAME TO "temporary_advanced_builders";
22+
CREATE TABLE "advanced_builders" ("builder" varchar(18) PRIMARY KEY NOT NULL, "given_at" datetime NOT NULL DEFAULT (datetime('now')), "role_name" varchar NOT NULL DEFAULT ('ADVANCED_BUILDER'));
23+
INSERT INTO "advanced_builders"("builder", "given_at", "role_name") SELECT "builder", "given_at", "role_name" FROM "temporary_advanced_builders";
24+
DROP TABLE "temporary_advanced_builders";
25+
ALTER TABLE "suspicious_users" RENAME TO "temporary_suspicious_users";
26+
CREATE TABLE "suspicious_users" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "userId" varchar(18) NOT NULL, "submitterId" varchar(18) NOT NULL, "messageId" varchar(18) NOT NULL, "denied" boolean NOT NULL DEFAULT (0), "approved" boolean NOT NULL DEFAULT (0), "moderatorId" varchar(18), "reason" text, "evidence" text NOT NULL, "deletedAt" datetime, "threadId" varchar(18));
27+
INSERT INTO "suspicious_users"("id", "userId", "submitterId", "messageId", "denied", "approved", "moderatorId", "reason", "evidence", "deletedAt", "threadId") SELECT "id", "userId", "submitterId", "messageId", "denied", "approved", "moderatorId", "reason", "evidence", "deletedAt", "threadId" FROM "temporary_suspicious_users";
28+
DROP TABLE "temporary_suspicious_users";
29+
ALTER TABLE "teampoint_permissions" RENAME TO "temporary_teampoint_permissions";
30+
CREATE TABLE "teampoint_permissions" ("roleId" varchar(18) PRIMARY KEY NOT NULL, "maxPoints" float NOT NULL DEFAULT (0), "minPoints" float NOT NULL DEFAULT (0), "maxUsagesPerDay" integer NOT NULL DEFAULT (10));
31+
INSERT INTO "teampoint_permissions"("roleId", "maxPoints", "minPoints", "maxUsagesPerDay") SELECT "roleId", "maxPoints", "minPoints", "maxUsagesPerDay" FROM "temporary_teampoint_permissions";
32+
DROP TABLE "temporary_teampoint_permissions";
33+
ALTER TABLE "banned_words" RENAME TO "temporary_banned_words";
34+
CREATE TABLE "banned_words" ("word" varchar(18) PRIMARY KEY NOT NULL, "punishment_type" varchar, "reason" varchar(1024), "duration" integer, "exception" boolean NOT NULL DEFAULT (0));
35+
INSERT INTO "banned_words"("word", "punishment_type", "reason", "duration", "exception") SELECT "word", "punishment_type", "reason", "duration", "exception" FROM "temporary_banned_words";
36+
DROP TABLE "temporary_banned_words";
37+
ALTER TABLE "moderation_notes" RENAME TO "temporary_moderation_notes";
38+
CREATE TABLE "moderation_notes" ("member" varchar(18) PRIMARY KEY NOT NULL, "body" varchar(1024) NOT NULL, "created_at" datetime NOT NULL DEFAULT (datetime('now')), "updated_at" datetime NOT NULL DEFAULT (datetime('now')), "updaters" text NOT NULL);
39+
INSERT INTO "moderation_notes"("member", "body", "created_at", "updated_at", "updaters") SELECT "member", "body", "created_at", "updated_at", "updaters" FROM "temporary_moderation_notes";
40+
DROP TABLE "temporary_moderation_notes";
41+
ALTER TABLE "tasks" RENAME TO "temporary_tasks";
42+
CREATE TABLE "tasks" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar NOT NULL, "description" varchar(2048) NOT NULL, "creator" varchar(18) NOT NULL, "assignees" text NOT NULL, "status" varchar);
43+
INSERT INTO "tasks"("id", "title", "description", "creator", "assignees", "status") SELECT "id", "title", "description", "creator", "assignees", "status" FROM "temporary_tasks";
44+
DROP TABLE "temporary_tasks";
45+
ALTER TABLE "suggestions" RENAME TO "temporary_suggestions";
46+
CREATE TABLE "suggestions" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "number" integer, "extends" integer, "author" varchar(18) NOT NULL, "anonymous" boolean NOT NULL, "title" varchar NOT NULL, "body" varchar(2048) NOT NULL, "teams" varchar, "status" varchar, "status_updater" varchar(18), "status_reason" varchar(1024), "message" varchar(18) NOT NULL, "thread" varchar(18), "staff" boolean NOT NULL, "created_at" datetime NOT NULL DEFAULT (datetime('now')), "deleted_at" datetime, "deleter" varchar(18));
47+
INSERT INTO "suggestions"("id", "number", "extends", "author", "anonymous", "title", "body", "teams", "status", "status_updater", "status_reason", "message", "thread", "staff", "created_at", "deleted_at", "deleter") SELECT "id", "number", "extends", "author", "anonymous", "title", "body", "teams", "status", "status_updater", "status_reason", "message", "thread", "staff", "created_at", "deleted_at", "deleter" FROM "temporary_suggestions";
48+
DROP TABLE "temporary_suggestions";
49+
ALTER TABLE "blunder_tracker" RENAME TO "temporary_blunder_tracker";
50+
CREATE TABLE "blunder_tracker" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "description" varchar NOT NULL, "role" varchar(18), "last_blunder" date, "message" varchar(18) NOT NULL, "channel" varchar(18) NOT NULL);
51+
INSERT INTO "blunder_tracker"("id", "description", "role", "last_blunder", "message", "channel") SELECT "id", "description", "role", "last_blunder", "message", "channel" FROM "temporary_blunder_tracker";
52+
DROP TABLE "temporary_blunder_tracker";

0 commit comments

Comments
 (0)