Add migration for first run

This commit is contained in:
Charlie Laabs
2021-12-29 23:27:54 -06:00
parent 81d086c47d
commit c6375204ce
6 changed files with 36 additions and 11 deletions

View File

@@ -31,5 +31,5 @@ module.exports = {
}
}
},
ignorePatterns: ['dist/**', 'node_modules/**', '.eslintrc.js']
ignorePatterns: ['dist/**', 'node_modules/**', '.eslintrc.js', 'src/migration/**']
}

View File

@@ -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',

14
package-lock.json generated
View File

@@ -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"

View File

@@ -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",

View File

View File

@@ -0,0 +1,24 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class CreateTables1640838214672 implements MigrationInterface {
name = 'CreateTables1640838214672'
public async up(queryRunner: QueryRunner): Promise<void> {
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<void> {
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"`);
}
}