From c6375204ce650f8d9e4f0b7f496ab6add1d91b35 Mon Sep 17 00:00:00 2001 From: Charlie Laabs Date: Wed, 29 Dec 2021 23:27:54 -0600 Subject: [PATCH] Add migration for first run --- .eslintrc.js | 2 +- ormconfig.js | 2 +- package-lock.json | 14 ++++++------ package.json | 5 +++-- src/migration/.gitkeep | 0 src/migration/1640838214672-CreateTables.ts | 24 +++++++++++++++++++++ 6 files changed, 36 insertions(+), 11 deletions(-) delete mode 100644 src/migration/.gitkeep create mode 100644 src/migration/1640838214672-CreateTables.ts diff --git a/.eslintrc.js b/.eslintrc.js index 7e3ce0e..a0c5480 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -31,5 +31,5 @@ module.exports = { } } }, - ignorePatterns: ['dist/**', 'node_modules/**', '.eslintrc.js'] + ignorePatterns: ['dist/**', 'node_modules/**', '.eslintrc.js', 'src/migration/**'] } \ No newline at end of file diff --git a/ormconfig.js b/ormconfig.js index d669dcb..bda7248 100644 --- a/ormconfig.js +++ b/ormconfig.js @@ -26,7 +26,7 @@ const prodConfig = { enableWAL: true, entities: ['dist/entity/**/*.js'], migrations: ['dist/migration/**/*.js'], - migrationsRun: false, + migrationsRun: true, subscribers: ['dist/subscriber/**/*.js'], cli: { entitiesDir: 'dist/entity', diff --git a/package-lock.json b/package-lock.json index 0a0436c..370665a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "erlpack": "github:discord/erlpack", "fs-extra": "^10.0.0", "json5": "^2.2.0", - "markov-strings-db": "^4.0.0", + "markov-strings-db": "^4.0.1", "pino": "^7.5.1", "pino-pretty": "^7.3.0", "reflect-metadata": "^0.1.13", @@ -2667,9 +2667,9 @@ "dev": true }, "node_modules/markov-strings-db": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/markov-strings-db/-/markov-strings-db-4.0.0.tgz", - "integrity": "sha512-6k4ftaBOBW+uw4XtzKSeulcwiMjj1JNcoAOvNZub4BEOiw6REOXoHYP48E0nZqFNUG6FsK41ZvLw0f1B8Bvl7g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/markov-strings-db/-/markov-strings-db-4.0.1.tgz", + "integrity": "sha512-i7GANb+/6Ppm8DAEO6jp3dxso28Z1LQRW2B+KgJFgvN0dRS9L9r5Dh5zNwW3txye8AYIFhPbXo5zdmP1UknXMQ==", "dependencies": { "reflect-metadata": "^0.1.13", "typeorm": "^0.2.41" @@ -6407,9 +6407,9 @@ "dev": true }, "markov-strings-db": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/markov-strings-db/-/markov-strings-db-4.0.0.tgz", - "integrity": "sha512-6k4ftaBOBW+uw4XtzKSeulcwiMjj1JNcoAOvNZub4BEOiw6REOXoHYP48E0nZqFNUG6FsK41ZvLw0f1B8Bvl7g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/markov-strings-db/-/markov-strings-db-4.0.1.tgz", + "integrity": "sha512-i7GANb+/6Ppm8DAEO6jp3dxso28Z1LQRW2B+KgJFgvN0dRS9L9r5Dh5zNwW3txye8AYIFhPbXo5zdmP1UknXMQ==", "requires": { "reflect-metadata": "^0.1.13", "typeorm": "^0.2.41" diff --git a/package.json b/package.json index 0e222c5..f95a710 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "build": "rimraf dist && tsc", "lint": "tsc --noEmit && eslint **/*.ts *.js", "docker:build": "docker build . -t charlocharlie/markov-discord:latest --target deploy", - "docker:run": "docker run --rm -ti -v $(pwd)/config:/usr/app/config charlocharlie/markov-discord:latest" + "docker:run": "docker run --rm -ti -v $(pwd)/config:/usr/app/config charlocharlie/markov-discord:latest", + "typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js" }, "repository": "https://github.com/claabs/markov-discord.git", "keywords": [ @@ -42,7 +43,7 @@ "erlpack": "github:discord/erlpack", "fs-extra": "^10.0.0", "json5": "^2.2.0", - "markov-strings-db": "^4.0.0", + "markov-strings-db": "^4.0.1", "pino": "^7.5.1", "pino-pretty": "^7.3.0", "reflect-metadata": "^0.1.13", diff --git a/src/migration/.gitkeep b/src/migration/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/migration/1640838214672-CreateTables.ts b/src/migration/1640838214672-CreateTables.ts new file mode 100644 index 0000000..99260d7 --- /dev/null +++ b/src/migration/1640838214672-CreateTables.ts @@ -0,0 +1,24 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class CreateTables1640838214672 implements MigrationInterface { + name = 'CreateTables1640838214672' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TABLE "guild" ("id" text PRIMARY KEY NOT NULL)`); + await queryRunner.query(`CREATE TABLE "channel" ("id" text PRIMARY KEY NOT NULL, "listen" boolean NOT NULL DEFAULT (0), "guildId" text)`); + await queryRunner.query(`CREATE TABLE "temporary_channel" ("id" text PRIMARY KEY NOT NULL, "listen" boolean NOT NULL DEFAULT (0), "guildId" text, CONSTRAINT "FK_58d968d578e6279e2cc884db403" FOREIGN KEY ("guildId") REFERENCES "guild" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`); + await queryRunner.query(`INSERT INTO "temporary_channel"("id", "listen", "guildId") SELECT "id", "listen", "guildId" FROM "channel"`); + await queryRunner.query(`DROP TABLE "channel"`); + await queryRunner.query(`ALTER TABLE "temporary_channel" RENAME TO "channel"`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "channel" RENAME TO "temporary_channel"`); + await queryRunner.query(`CREATE TABLE "channel" ("id" text PRIMARY KEY NOT NULL, "listen" boolean NOT NULL DEFAULT (0), "guildId" text)`); + await queryRunner.query(`INSERT INTO "channel"("id", "listen", "guildId") SELECT "id", "listen", "guildId" FROM "temporary_channel"`); + await queryRunner.query(`DROP TABLE "temporary_channel"`); + await queryRunner.query(`DROP TABLE "channel"`); + await queryRunner.query(`DROP TABLE "guild"`); + } + +}