member tables

This commit is contained in:
Julian Krauser 2024-09-14 11:32:34 +02:00
parent 75fb556796
commit 10db9a40f4
14 changed files with 483 additions and 26 deletions

View file

@ -0,0 +1,258 @@
import { MigrationInterface, QueryRunner, Table, TableColumn, TableForeignKey } from "typeorm";
export class Memberdata1726301836849 implements MigrationInterface {
name = "Memberdata1726301836849";
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(
new Table({
name: "membership",
columns: [
{ name: "id", type: "int", isPrimary: true, isGenerated: true, generationStrategy: "increment" },
{ name: "internalId", type: "varchar", length: "255", isNullable: true },
{ name: "start", type: "date", isNullable: false },
{ name: "end", type: "date", isNullable: true },
{ name: "terminationReason", type: "varchar", length: "255", isNullable: true },
{ name: "memberId", type: "int", isNullable: false },
{ name: "statusId", type: "int", isNullable: false },
],
uniques: [{ name: "IDX_703f499fe3a9892e3a8790cdfc", columnNames: ["internalId"] }],
}),
true
);
await queryRunner.createTable(
new Table({
name: "member_qualifications",
columns: [
{ name: "id", type: "int", isPrimary: true, isGenerated: true, generationStrategy: "increment" },
{ name: "note", type: "varchar", length: "255", isNullable: true },
{ name: "start", type: "date", isNullable: false },
{ name: "end", type: "date", isNullable: true },
{ name: "terminationReason", type: "varchar", length: "255", isNullable: true },
{ name: "memberId", type: "int", isNullable: false },
{ name: "qualificationId", type: "int", isNullable: false },
],
}),
true
);
await queryRunner.createTable(
new Table({
name: "member_executive_positions",
columns: [
{ name: "id", type: "int", isPrimary: true, isGenerated: true, generationStrategy: "increment" },
{ name: "note", type: "varchar", length: "255", isNullable: true },
{ name: "start", type: "date", isNullable: false },
{ name: "end", type: "date", isNullable: true },
{ name: "memberId", type: "int", isNullable: false },
{ name: "executivePositionId", type: "int", isNullable: false },
],
}),
true
);
await queryRunner.createTable(
new Table({
name: "member",
columns: [
{ name: "id", type: "int", isPrimary: true, isGenerated: true, generationStrategy: "increment" },
{
name: "salutation",
type: "enum",
enum: ["sir", "madam", "other", "none"],
default: "'none'",
isNullable: false,
},
{ name: "firstname", type: "varchar", length: "255", isNullable: false },
{ name: "lastname", type: "varchar", length: "255", isNullable: false },
{ name: "nameaffix", type: "varchar", length: "255", isNullable: false },
{ name: "birthdate", type: "date", isNullable: false },
{ name: "sendNewsletterId", type: "int", isNullable: true },
],
uniques: [{ name: "REL_d57e160c4513cd949159217281", columnNames: ["sendNewsletterId"] }],
}),
true
);
await queryRunner.createTable(
new Table({
name: "member_awards",
columns: [
{ name: "id", type: "int", isPrimary: true, isGenerated: true, generationStrategy: "increment" },
{ name: "given", type: "tinyint", default: 1, isNullable: false },
{ name: "note", type: "varchar", length: "255", isNullable: true },
{ name: "date", type: "date", isNullable: false },
{ name: "memberId", type: "int", isNullable: false },
{ name: "awardId", type: "int", isNullable: false },
],
}),
true
);
await queryRunner.addColumn("communication", new TableColumn({ name: "memberId", type: "int", isNullable: false }));
await queryRunner.createForeignKey(
"membership",
new TableForeignKey({
columnNames: ["memberId"],
referencedTableName: "member",
referencedColumnNames: ["id"],
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"membership",
new TableForeignKey({
columnNames: ["statusId"],
referencedTableName: "membership_status",
referencedColumnNames: ["id"],
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"member_qualifications",
new TableForeignKey({
columnNames: ["memberId"],
referencedTableName: "member",
referencedColumnNames: ["id"],
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"member_qualifications",
new TableForeignKey({
columnNames: ["qualificationId"],
referencedTableName: "qualification",
referencedColumnNames: ["id"],
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"member_executive_positions",
new TableForeignKey({
columnNames: ["memberId"],
referencedTableName: "member",
referencedColumnNames: ["id"],
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"member_executive_positions",
new TableForeignKey({
columnNames: ["executivePositionId"],
referencedTableName: "executive_position",
referencedColumnNames: ["id"],
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"communication",
new TableForeignKey({
columnNames: ["memberId"],
referencedTableName: "member",
referencedColumnNames: ["id"],
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"member",
new TableForeignKey({
columnNames: ["sendNewsletterId"],
referencedTableName: "communication",
referencedColumnNames: ["id"],
onDelete: "SET NULL",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"member_awards",
new TableForeignKey({
columnNames: ["memberId"],
referencedTableName: "member",
referencedColumnNames: ["id"],
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
);
await queryRunner.createForeignKey(
"member_awards",
new TableForeignKey({
columnNames: ["awardId"],
referencedTableName: "award",
referencedColumnNames: ["id"],
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
const member = await queryRunner.getTable("member");
const memeberForeignKey = member.foreignKeys.find((fk) => fk.columnNames.indexOf("sendNewsletterId") !== -1);
await queryRunner.dropForeignKey("member", memeberForeignKey);
const member_awards = await queryRunner.getTable("member_awards");
const memeberAwardsForeignKeyMember = member_awards.foreignKeys.find(
(fk) => fk.columnNames.indexOf("memberId") !== -1
);
const memeberAwardsForeignKeyAward = member_awards.foreignKeys.find(
(fk) => fk.columnNames.indexOf("awardId") !== -1
);
await queryRunner.dropForeignKey("member_awards", memeberAwardsForeignKeyMember);
await queryRunner.dropForeignKey("member_awards", memeberAwardsForeignKeyAward);
const communication = await queryRunner.getTable("communication");
const communicationForeignKey = communication.foreignKeys.find((fk) => fk.columnNames.indexOf("memberId") !== -1);
await queryRunner.dropForeignKey("communication", communicationForeignKey);
const member_executive_positions = await queryRunner.getTable("member_executive_positions");
const memeberExecutivePositionForeignKeyMember = member_executive_positions.foreignKeys.find(
(fk) => fk.columnNames.indexOf("memberId") !== -1
);
const memeberExecutivePositionForeignKeyPosition = member_executive_positions.foreignKeys.find(
(fk) => fk.columnNames.indexOf("executivePositionId") !== -1
);
await queryRunner.dropForeignKey("member_executive_positions", memeberExecutivePositionForeignKeyMember);
await queryRunner.dropForeignKey("member_executive_positions", memeberExecutivePositionForeignKeyPosition);
const member_qualifications = await queryRunner.getTable("member_qualifications");
const memeberQualificationForeignKeyMember = member_qualifications.foreignKeys.find(
(fk) => fk.columnNames.indexOf("memberId") !== -1
);
const memeberQualificationForeignKeyQualification = member_qualifications.foreignKeys.find(
(fk) => fk.columnNames.indexOf("qualificationId") !== -1
);
await queryRunner.dropForeignKey("member_qualifications", memeberQualificationForeignKeyMember);
await queryRunner.dropForeignKey("member_qualifications", memeberQualificationForeignKeyQualification);
const membership = await queryRunner.getTable("membership");
const membershipForeignKeyMember = membership.foreignKeys.find((fk) => fk.columnNames.indexOf("memberId") !== -1);
const membershipForeignKeyStatus = membership.foreignKeys.find((fk) => fk.columnNames.indexOf("statusId") !== -1);
await queryRunner.dropForeignKey("membership", membershipForeignKeyMember);
await queryRunner.dropForeignKey("membership", membershipForeignKeyStatus);
await queryRunner.dropColumn("communication", "memberId");
await queryRunner.dropTable("member_awards");
await queryRunner.dropTable("member");
await queryRunner.dropTable("member_executive_positions");
await queryRunner.dropTable("member_qualifications");
await queryRunner.dropTable("membership");
}
}