fix: add JoinTable annotation to ManyToMany relations in library entities

BREAKING CHANGE: this commits deletes the existing migration
This commit is contained in:
Xymorot 2020-04-21 01:07:00 +02:00
parent 27c252cd0c
commit b202c270bc
9 changed files with 1204 additions and 546 deletions

View File

@ -1,4 +1,4 @@
import { Column, Entity, ManyToMany, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
import { Column, Entity, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
import { Source } from './source';
import { Work } from './work';
@ -27,6 +27,7 @@ export class Copy implements IIdentifiableEntity {
* where to find this specific copy
*/
@ManyToMany(() => Source, (source: Source) => source.copies)
@JoinTable()
public sources: Promise<Source[]>;
/**

View File

@ -1,4 +1,4 @@
import { Column, Entity, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { CharacterTag } from './character-tag';
import { InteractionTag } from './interaction-tag';
import { TagName } from './tag-name';
@ -42,6 +42,7 @@ export class Tag implements IIdentifiableEntity, IMultiNamedEntity, IDescribable
public interactionTags: Promise<InteractionTag[]>;
@ManyToMany(() => Tag, (tag: Tag) => tag.children)
@JoinTable()
public parents: Promise<Tag[]>;
@ManyToMany(() => Tag, (tag: Tag) => tag.parents)

View File

@ -1,4 +1,4 @@
import { Column, Entity, ManyToMany, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
import { Column, Entity, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
import { Author } from './author';
import { AuthorRole } from './author-role';
import { Work } from './work';
@ -25,6 +25,7 @@ export class WorkAuthor implements IIdentifiableEntity, IOrderableEntity {
* the roles of the author in the work
*/
@ManyToMany(() => AuthorRole, (authorRole: AuthorRole) => authorRole.workAuthors)
@JoinTable()
public authorRoles: Promise<AuthorRole[]>;
/**

View File

@ -1,4 +1,4 @@
import { Column, Entity, ManyToMany, ManyToOne, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Column, Entity, JoinTable, ManyToMany, ManyToOne, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { CharacterTag } from './character-tag';
import { InteractionTag } from './interaction-tag';
import { Work } from './work';
@ -36,12 +36,14 @@ export class WorkCharacter implements IIdentifiableEntity, IMultiNamedEntity {
* interaction with other characters as actor
*/
@ManyToMany(() => InteractionTag, (interactionTag: InteractionTag) => interactionTag.subjectCharacters)
@JoinTable()
public interactWith: Promise<InteractionTag[]>;
/**
* interaction with other characters as receiver
*/
@ManyToMany(() => InteractionTag, (interactionTag: InteractionTag) => interactionTag.objectCharacters)
@JoinTable()
public interactedBy: Promise<InteractionTag[]>;
/**
@ -54,5 +56,6 @@ export class WorkCharacter implements IIdentifiableEntity, IMultiNamedEntity {
* existing characters character is based on
*/
@ManyToMany(() => WorldCharacter, (worldCharacter: WorldCharacter) => worldCharacter.workCharacters)
@JoinTable()
public worldCharacters: Promise<WorldCharacter[]>;
}

View File

@ -1,4 +1,4 @@
import { Column, Entity, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { PercentCheck } from '../decorators/percent-check';
import { CollectionPart } from './collection-part';
import { Copy } from './copy';
@ -69,6 +69,7 @@ export class Work implements IIdentifiableEntity, IMultiNamedEntity {
* fictional worlds in which this work takes place
*/
@ManyToMany(() => World, (world: World) => world.works)
@JoinTable()
public worlds: Promise<World[]>;
/**
@ -100,6 +101,7 @@ export class Work implements IIdentifiableEntity, IMultiNamedEntity {
* the languages of the work (if applicable)
*/
@ManyToMany(() => Language, (language: Language) => language.works)
@JoinTable()
public languages: Promise<Language[]>;
/**

View File

@ -1,4 +1,4 @@
import { Column, Entity, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { WorkCharacter } from './work-character';
import { World } from './world';
import { WorldCharacterName } from './world-character-name';
@ -32,6 +32,7 @@ export class WorldCharacter implements IIdentifiableEntity, IMultiNamedEntity, I
public worlds: Promise<World[]>;
@ManyToMany(() => WorldCharacter, (worldCharacter: WorldCharacter) => worldCharacter.children)
@JoinTable()
public parents: Promise<WorldCharacter[]>;
@ManyToMany(() => WorldCharacter, (worldCharacter: WorldCharacter) => worldCharacter.parents)

View File

@ -1,4 +1,4 @@
import { Column, Entity, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Work } from './work';
import { WorldCharacter } from './world-character';
import { WorldName } from './world-name';
@ -29,11 +29,13 @@ export class World implements IIdentifiableEntity, IMultiNamedEntity, IHierachic
* canon characters in this world
*/
@ManyToMany(() => WorldCharacter, (worldCharacter: WorldCharacter) => worldCharacter.worlds)
@JoinTable()
public worldCharacters: Promise<WorldCharacter[]>;
@ManyToMany(() => World, (world: World) => world.parents)
public children: Promise<World[]>;
@ManyToMany(() => World, (world: World) => world.children)
@JoinTable()
public parents: Promise<World[]>;
}

View File

@ -1,539 +0,0 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
export class initialMigration1586482961027 implements MigrationInterface {
name = 'initialMigration1586482961027';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "author_role_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "author_role" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL, "description" varchar NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "collection_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "collection" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "collection_part" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "collectionId" integer NOT NULL, "workId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "site_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "site" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "source" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "uri" varchar NOT NULL, "siteId" integer)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "copy" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "hash" varchar NOT NULL, "location" varchar, "ranking" integer NOT NULL DEFAULT (0), "originalId" integer NOT NULL)`,
undefined
);
await queryRunner.query(`CREATE TABLE "language" ("code" varchar PRIMARY KEY NOT NULL)`, undefined);
await queryRunner.query(
`CREATE TABLE "transformation_type_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "transformation_type" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL, "description" varchar, "conservesTags" boolean NOT NULL DEFAULT (0))`,
undefined
);
await queryRunner.query(
`CREATE TABLE "transformation" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "byWorkId" integer NOT NULL, "typeId" integer NOT NULL, "ofWorkId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "interaction_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "tagId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991))`,
undefined
);
await queryRunner.query(
`CREATE TABLE "tag_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "work_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "tagId" integer NOT NULL, "workId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991))`,
undefined
);
await queryRunner.query(
`CREATE TABLE "tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL, "description" varchar)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "character_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "workCharacterId" integer NOT NULL, "tagId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991))`,
undefined
);
await queryRunner.query(
`CREATE TABLE "work_character_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "world_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "world" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "world_character_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "world_character" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "work_character" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL, "workId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "work_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "work" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL, "isCanonical" boolean NOT NULL DEFAULT (0), "rating" integer, "releaseDate" datetime, CONSTRAINT "rating needs to be between 0 and 9007199254740991" CHECK (rating >= 0 AND rating <= 9007199254740991))`,
undefined
);
await queryRunner.query(
`CREATE TABLE "work_author" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "workId" integer NOT NULL, "authorId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "author" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "author_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`CREATE TABLE "temporary_author_role_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_53007d787184883d4f88f518213" FOREIGN KEY ("entityId") REFERENCES "author_role" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_author_role_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "author_role_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "author_role_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_author_role_name" RENAME TO "author_role_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_collection_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_e32c613ebf793bdec166b99c67c" FOREIGN KEY ("entityId") REFERENCES "collection" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_collection_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "collection_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "collection_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_collection_name" RENAME TO "collection_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_collection_part" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "collectionId" integer NOT NULL, "workId" integer NOT NULL, CONSTRAINT "FK_a331dfd7f97355b0241aabbe9dd" FOREIGN KEY ("collectionId") REFERENCES "collection" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "FK_76bf2490e80346af774adb9f0f0" FOREIGN KEY ("workId") REFERENCES "work" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_collection_part"("id", "order", "collectionId", "workId") SELECT "id", "order", "collectionId", "workId" FROM "collection_part"`,
undefined
);
await queryRunner.query(`DROP TABLE "collection_part"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_collection_part" RENAME TO "collection_part"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_site_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_320041fe1c2631a761b25d4446a" FOREIGN KEY ("entityId") REFERENCES "site" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_site_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "site_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "site_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_site_name" RENAME TO "site_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_source" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "uri" varchar NOT NULL, "siteId" integer, CONSTRAINT "FK_73b253e679f350d140bdb104e49" FOREIGN KEY ("siteId") REFERENCES "site" ("id") ON DELETE RESTRICT ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_source"("id", "uri", "siteId") SELECT "id", "uri", "siteId" FROM "source"`,
undefined
);
await queryRunner.query(`DROP TABLE "source"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_source" RENAME TO "source"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_copy" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "hash" varchar NOT NULL, "location" varchar, "ranking" integer NOT NULL DEFAULT (0), "originalId" integer NOT NULL, CONSTRAINT "FK_e8ce0011cf0a8b9fdc8ad908a44" FOREIGN KEY ("originalId") REFERENCES "work" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_copy"("id", "hash", "location", "ranking", "originalId") SELECT "id", "hash", "location", "ranking", "originalId" FROM "copy"`,
undefined
);
await queryRunner.query(`DROP TABLE "copy"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_copy" RENAME TO "copy"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_transformation_type_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_5bc54ac960e6587c39297194ec6" FOREIGN KEY ("entityId") REFERENCES "transformation_type" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_transformation_type_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "transformation_type_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "transformation_type_name"`, undefined);
await queryRunner.query(
`ALTER TABLE "temporary_transformation_type_name" RENAME TO "transformation_type_name"`,
undefined
);
await queryRunner.query(
`CREATE TABLE "temporary_transformation" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "byWorkId" integer NOT NULL, "typeId" integer NOT NULL, "ofWorkId" integer NOT NULL, CONSTRAINT "FK_263a368f9017f5725c4fa12351b" FOREIGN KEY ("byWorkId") REFERENCES "work" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "FK_4deb36ce15d6547c1ed7e994720" FOREIGN KEY ("typeId") REFERENCES "transformation_type" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT "FK_d41fc0471e72b5d1dda372a662c" FOREIGN KEY ("ofWorkId") REFERENCES "work" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_transformation"("id", "order", "byWorkId", "typeId", "ofWorkId") SELECT "id", "order", "byWorkId", "typeId", "ofWorkId" FROM "transformation"`,
undefined
);
await queryRunner.query(`DROP TABLE "transformation"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_transformation" RENAME TO "transformation"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_interaction_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "tagId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991), CONSTRAINT "FK_af4c7e7219611f6b6025b8276f0" FOREIGN KEY ("tagId") REFERENCES "tag" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_interaction_tag"("id", "weight", "tagId") SELECT "id", "weight", "tagId" FROM "interaction_tag"`,
undefined
);
await queryRunner.query(`DROP TABLE "interaction_tag"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_interaction_tag" RENAME TO "interaction_tag"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_tag_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_94c570315f982d2434046c30dc1" FOREIGN KEY ("entityId") REFERENCES "tag" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_tag_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "tag_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "tag_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_tag_name" RENAME TO "tag_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_work_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "tagId" integer NOT NULL, "workId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991), CONSTRAINT "FK_8428f32a2c63df16b605e77326e" FOREIGN KEY ("tagId") REFERENCES "tag" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "FK_13dd6d2f7b58c451636bf28b4f8" FOREIGN KEY ("workId") REFERENCES "work" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_work_tag"("id", "weight", "tagId", "workId") SELECT "id", "weight", "tagId", "workId" FROM "work_tag"`,
undefined
);
await queryRunner.query(`DROP TABLE "work_tag"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_work_tag" RENAME TO "work_tag"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_character_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "workCharacterId" integer NOT NULL, "tagId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991), CONSTRAINT "FK_0c27931804d469fba75a2c5d357" FOREIGN KEY ("workCharacterId") REFERENCES "work_character" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "FK_14ffc3712f3341e793668b2cd61" FOREIGN KEY ("tagId") REFERENCES "tag" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_character_tag"("id", "weight", "workCharacterId", "tagId") SELECT "id", "weight", "workCharacterId", "tagId" FROM "character_tag"`,
undefined
);
await queryRunner.query(`DROP TABLE "character_tag"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_character_tag" RENAME TO "character_tag"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_work_character_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_0f95e554fd5bd674937f733f219" FOREIGN KEY ("entityId") REFERENCES "work_character" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_work_character_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "work_character_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "work_character_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_work_character_name" RENAME TO "work_character_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_world_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_1147cb1b497ecbf3b8d3c2ac1b3" FOREIGN KEY ("entityId") REFERENCES "world" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_world_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "world_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "world_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_world_name" RENAME TO "world_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_world_character_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_00fb48ee8ded5c6bc3061c83cbb" FOREIGN KEY ("entityId") REFERENCES "world_character" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_world_character_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "world_character_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "world_character_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_world_character_name" RENAME TO "world_character_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_work_character" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL, "workId" integer NOT NULL, CONSTRAINT "FK_bd63df77a1db7870038853da30f" FOREIGN KEY ("workId") REFERENCES "work" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_work_character"("id", "nameCanonical", "workId") SELECT "id", "nameCanonical", "workId" FROM "work_character"`,
undefined
);
await queryRunner.query(`DROP TABLE "work_character"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_work_character" RENAME TO "work_character"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_work_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_e9887937be670e7056b2ce480d2" FOREIGN KEY ("entityId") REFERENCES "work" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_work_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "work_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "work_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_work_name" RENAME TO "work_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_work_author" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "workId" integer NOT NULL, "authorId" integer NOT NULL, CONSTRAINT "FK_661d8f5cdb4bd215ad16301e0b1" FOREIGN KEY ("workId") REFERENCES "work" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "FK_a2045b9fc41c357d2c98d5a9d60" FOREIGN KEY ("authorId") REFERENCES "author" ("id") ON DELETE RESTRICT ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_work_author"("id", "order", "workId", "authorId") SELECT "id", "order", "workId", "authorId" FROM "work_author"`,
undefined
);
await queryRunner.query(`DROP TABLE "work_author"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_work_author" RENAME TO "work_author"`, undefined);
await queryRunner.query(
`CREATE TABLE "temporary_author_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL, CONSTRAINT "FK_fb4e8ac4593d1c4d5b10c013d41" FOREIGN KEY ("entityId") REFERENCES "author" ("id") ON DELETE CASCADE ON UPDATE CASCADE)`,
undefined
);
await queryRunner.query(
`INSERT INTO "temporary_author_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "author_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "author_name"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_author_name" RENAME TO "author_name"`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "author_name" RENAME TO "temporary_author_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "author_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "author_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_author_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_author_name"`, undefined);
await queryRunner.query(`ALTER TABLE "work_author" RENAME TO "temporary_work_author"`, undefined);
await queryRunner.query(
`CREATE TABLE "work_author" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "workId" integer NOT NULL, "authorId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "work_author"("id", "order", "workId", "authorId") SELECT "id", "order", "workId", "authorId" FROM "temporary_work_author"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_work_author"`, undefined);
await queryRunner.query(`ALTER TABLE "work_name" RENAME TO "temporary_work_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "work_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "work_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_work_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_work_name"`, undefined);
await queryRunner.query(`ALTER TABLE "work_character" RENAME TO "temporary_work_character"`, undefined);
await queryRunner.query(
`CREATE TABLE "work_character" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "nameCanonical" varchar NOT NULL, "workId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "work_character"("id", "nameCanonical", "workId") SELECT "id", "nameCanonical", "workId" FROM "temporary_work_character"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_work_character"`, undefined);
await queryRunner.query(`ALTER TABLE "world_character_name" RENAME TO "temporary_world_character_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "world_character_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "world_character_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_world_character_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_world_character_name"`, undefined);
await queryRunner.query(`ALTER TABLE "world_name" RENAME TO "temporary_world_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "world_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "world_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_world_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_world_name"`, undefined);
await queryRunner.query(`ALTER TABLE "work_character_name" RENAME TO "temporary_work_character_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "work_character_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "work_character_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_work_character_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_work_character_name"`, undefined);
await queryRunner.query(`ALTER TABLE "character_tag" RENAME TO "temporary_character_tag"`, undefined);
await queryRunner.query(
`CREATE TABLE "character_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "workCharacterId" integer NOT NULL, "tagId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991))`,
undefined
);
await queryRunner.query(
`INSERT INTO "character_tag"("id", "weight", "workCharacterId", "tagId") SELECT "id", "weight", "workCharacterId", "tagId" FROM "temporary_character_tag"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_character_tag"`, undefined);
await queryRunner.query(`ALTER TABLE "work_tag" RENAME TO "temporary_work_tag"`, undefined);
await queryRunner.query(
`CREATE TABLE "work_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "tagId" integer NOT NULL, "workId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991))`,
undefined
);
await queryRunner.query(
`INSERT INTO "work_tag"("id", "weight", "tagId", "workId") SELECT "id", "weight", "tagId", "workId" FROM "temporary_work_tag"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_work_tag"`, undefined);
await queryRunner.query(`ALTER TABLE "tag_name" RENAME TO "temporary_tag_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "tag_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "tag_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_tag_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_tag_name"`, undefined);
await queryRunner.query(`ALTER TABLE "interaction_tag" RENAME TO "temporary_interaction_tag"`, undefined);
await queryRunner.query(
`CREATE TABLE "interaction_tag" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "weight" integer NOT NULL, "tagId" integer NOT NULL, CONSTRAINT "weight needs to be between 0 and 9007199254740991" CHECK (weight >= 0 AND weight <= 9007199254740991))`,
undefined
);
await queryRunner.query(
`INSERT INTO "interaction_tag"("id", "weight", "tagId") SELECT "id", "weight", "tagId" FROM "temporary_interaction_tag"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_interaction_tag"`, undefined);
await queryRunner.query(`ALTER TABLE "transformation" RENAME TO "temporary_transformation"`, undefined);
await queryRunner.query(
`CREATE TABLE "transformation" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "byWorkId" integer NOT NULL, "typeId" integer NOT NULL, "ofWorkId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "transformation"("id", "order", "byWorkId", "typeId", "ofWorkId") SELECT "id", "order", "byWorkId", "typeId", "ofWorkId" FROM "temporary_transformation"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_transformation"`, undefined);
await queryRunner.query(
`ALTER TABLE "transformation_type_name" RENAME TO "temporary_transformation_type_name"`,
undefined
);
await queryRunner.query(
`CREATE TABLE "transformation_type_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "transformation_type_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_transformation_type_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_transformation_type_name"`, undefined);
await queryRunner.query(`ALTER TABLE "copy" RENAME TO "temporary_copy"`, undefined);
await queryRunner.query(
`CREATE TABLE "copy" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "hash" varchar NOT NULL, "location" varchar, "ranking" integer NOT NULL DEFAULT (0), "originalId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "copy"("id", "hash", "location", "ranking", "originalId") SELECT "id", "hash", "location", "ranking", "originalId" FROM "temporary_copy"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_copy"`, undefined);
await queryRunner.query(`ALTER TABLE "source" RENAME TO "temporary_source"`, undefined);
await queryRunner.query(
`CREATE TABLE "source" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "uri" varchar NOT NULL, "siteId" integer)`,
undefined
);
await queryRunner.query(
`INSERT INTO "source"("id", "uri", "siteId") SELECT "id", "uri", "siteId" FROM "temporary_source"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_source"`, undefined);
await queryRunner.query(`ALTER TABLE "site_name" RENAME TO "temporary_site_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "site_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "site_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_site_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_site_name"`, undefined);
await queryRunner.query(`ALTER TABLE "collection_part" RENAME TO "temporary_collection_part"`, undefined);
await queryRunner.query(
`CREATE TABLE "collection_part" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "order" integer NOT NULL DEFAULT (0), "collectionId" integer NOT NULL, "workId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "collection_part"("id", "order", "collectionId", "workId") SELECT "id", "order", "collectionId", "workId" FROM "temporary_collection_part"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_collection_part"`, undefined);
await queryRunner.query(`ALTER TABLE "collection_name" RENAME TO "temporary_collection_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "collection_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "collection_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_collection_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_collection_name"`, undefined);
await queryRunner.query(`ALTER TABLE "author_role_name" RENAME TO "temporary_author_role_name"`, undefined);
await queryRunner.query(
`CREATE TABLE "author_role_name" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "entityId" integer NOT NULL)`,
undefined
);
await queryRunner.query(
`INSERT INTO "author_role_name"("id", "name", "entityId") SELECT "id", "name", "entityId" FROM "temporary_author_role_name"`,
undefined
);
await queryRunner.query(`DROP TABLE "temporary_author_role_name"`, undefined);
await queryRunner.query(`DROP TABLE "author_name"`, undefined);
await queryRunner.query(`DROP TABLE "author"`, undefined);
await queryRunner.query(`DROP TABLE "work_author"`, undefined);
await queryRunner.query(`DROP TABLE "work"`, undefined);
await queryRunner.query(`DROP TABLE "work_name"`, undefined);
await queryRunner.query(`DROP TABLE "work_character"`, undefined);
await queryRunner.query(`DROP TABLE "world_character"`, undefined);
await queryRunner.query(`DROP TABLE "world_character_name"`, undefined);
await queryRunner.query(`DROP TABLE "world"`, undefined);
await queryRunner.query(`DROP TABLE "world_name"`, undefined);
await queryRunner.query(`DROP TABLE "work_character_name"`, undefined);
await queryRunner.query(`DROP TABLE "character_tag"`, undefined);
await queryRunner.query(`DROP TABLE "tag"`, undefined);
await queryRunner.query(`DROP TABLE "work_tag"`, undefined);
await queryRunner.query(`DROP TABLE "tag_name"`, undefined);
await queryRunner.query(`DROP TABLE "interaction_tag"`, undefined);
await queryRunner.query(`DROP TABLE "transformation"`, undefined);
await queryRunner.query(`DROP TABLE "transformation_type"`, undefined);
await queryRunner.query(`DROP TABLE "transformation_type_name"`, undefined);
await queryRunner.query(`DROP TABLE "language"`, undefined);
await queryRunner.query(`DROP TABLE "copy"`, undefined);
await queryRunner.query(`DROP TABLE "source"`, undefined);
await queryRunner.query(`DROP TABLE "site"`, undefined);
await queryRunner.query(`DROP TABLE "site_name"`, undefined);
await queryRunner.query(`DROP TABLE "collection_part"`, undefined);
await queryRunner.query(`DROP TABLE "collection"`, undefined);
await queryRunner.query(`DROP TABLE "collection_name"`, undefined);
await queryRunner.query(`DROP TABLE "author_role"`, undefined);
await queryRunner.query(`DROP TABLE "author_role_name"`, undefined);
}
}

File diff suppressed because it is too large Load Diff