unique fields for tables
This commit is contained in:
parent
684c24e4fd
commit
4378c02d17
16 changed files with 144 additions and 19 deletions
|
@ -75,6 +75,7 @@ import { salutation } from "./entity/settings/salutation";
|
||||||
import { SalutationAsTable1737796878058 } from "./migrations/1737796878058-salutationAsTable";
|
import { SalutationAsTable1737796878058 } from "./migrations/1737796878058-salutationAsTable";
|
||||||
import { UpdateViews1737800468938 } from "./migrations/1737800468938-updateViews";
|
import { UpdateViews1737800468938 } from "./migrations/1737800468938-updateViews";
|
||||||
import { MoveSendNewsletterFlag1737816852011 } from "./migrations/1737816852011-moveSendNewsletterFlag";
|
import { MoveSendNewsletterFlag1737816852011 } from "./migrations/1737816852011-moveSendNewsletterFlag";
|
||||||
|
import { UniqueFields1738057119384 } from "./migrations/1738057119384-UniqueFields";
|
||||||
|
|
||||||
const dataSource = new DataSource({
|
const dataSource = new DataSource({
|
||||||
type: DB_TYPE as any,
|
type: DB_TYPE as any,
|
||||||
|
@ -160,6 +161,7 @@ const dataSource = new DataSource({
|
||||||
SalutationAsTable1737796878058,
|
SalutationAsTable1737796878058,
|
||||||
UpdateViews1737800468938,
|
UpdateViews1737800468938,
|
||||||
MoveSendNewsletterFlag1737816852011,
|
MoveSendNewsletterFlag1737816852011,
|
||||||
|
UniqueFields1738057119384,
|
||||||
],
|
],
|
||||||
migrationsRun: true,
|
migrationsRun: true,
|
||||||
migrationsTransactionMode: "each",
|
migrationsTransactionMode: "each",
|
||||||
|
|
|
@ -32,7 +32,11 @@ export class member {
|
||||||
@OneToMany(() => communication, (communications) => communications.member)
|
@OneToMany(() => communication, (communications) => communications.member)
|
||||||
communications: communication[];
|
communications: communication[];
|
||||||
|
|
||||||
@ManyToOne(() => salutation, (salutation) => salutation.members)
|
@ManyToOne(() => salutation, (salutation) => salutation.members, {
|
||||||
|
nullable: false,
|
||||||
|
onDelete: "RESTRICT",
|
||||||
|
onUpdate: "RESTRICT",
|
||||||
|
})
|
||||||
salutation: salutation;
|
salutation: salutation;
|
||||||
|
|
||||||
@OneToMany(() => membership, (membership) => membership.member)
|
@OneToMany(() => membership, (membership) => membership.member)
|
||||||
|
|
|
@ -9,7 +9,7 @@ export class newsletter {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
title: string;
|
title: string;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255, default: "" })
|
@Column({ type: "varchar", length: 255, default: "" })
|
||||||
|
|
|
@ -5,7 +5,7 @@ export class protocol {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
title: string;
|
title: string;
|
||||||
|
|
||||||
@Column({ type: "date" })
|
@Column({ type: "date" })
|
||||||
|
|
|
@ -6,8 +6,8 @@ export class refresh {
|
||||||
@PrimaryColumn({ type: "varchar", length: 255 })
|
@PrimaryColumn({ type: "varchar", length: 255 })
|
||||||
token: string;
|
token: string;
|
||||||
|
|
||||||
@PrimaryColumn({ type: "int" })
|
@PrimaryColumn()
|
||||||
userId: number;
|
userId: string;
|
||||||
|
|
||||||
@Column({ type: "datetime" })
|
@Column({ type: "datetime" })
|
||||||
expiry: Date;
|
expiry: Date;
|
||||||
|
|
|
@ -6,7 +6,7 @@ export class award {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
award: string;
|
award: string;
|
||||||
|
|
||||||
@OneToMany(() => memberAwards, (member) => member.award)
|
@OneToMany(() => memberAwards, (member) => member.award)
|
||||||
|
|
|
@ -6,7 +6,7 @@ export class calendarType {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
type: string;
|
type: string;
|
||||||
|
|
||||||
@Column({ type: "boolean" }) // none specified cal dav request
|
@Column({ type: "boolean" }) // none specified cal dav request
|
||||||
|
|
|
@ -7,7 +7,7 @@ export class communicationType {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
type: string;
|
type: string;
|
||||||
|
|
||||||
@Column({
|
@Column({
|
||||||
|
|
|
@ -6,7 +6,7 @@ export class executivePosition {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
position: string;
|
position: string;
|
||||||
|
|
||||||
@OneToMany(() => memberExecutivePositions, (memberExecutivePositions) => memberExecutivePositions.executivePosition)
|
@OneToMany(() => memberExecutivePositions, (memberExecutivePositions) => memberExecutivePositions.executivePosition)
|
||||||
|
|
|
@ -6,7 +6,7 @@ export class membershipStatus {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
status: string;
|
status: string;
|
||||||
|
|
||||||
@OneToMany(() => membership, (membership) => membership.status)
|
@OneToMany(() => membership, (membership) => membership.status)
|
||||||
|
|
|
@ -6,7 +6,7 @@ export class qualification {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
qualification: string;
|
qualification: string;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255, nullable: true })
|
@Column({ type: "varchar", length: 255, nullable: true })
|
||||||
|
|
|
@ -5,7 +5,7 @@ export class template {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
template: string;
|
template: string;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255, nullable: true })
|
@Column({ type: "varchar", length: 255, nullable: true })
|
||||||
|
|
|
@ -7,7 +7,7 @@ export class role {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "increment", type: "int" })
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255, unique: true })
|
||||||
role: string;
|
role: string;
|
||||||
|
|
||||||
@ManyToMany(() => user, (user) => user.roles, {
|
@ManyToMany(() => user, (user) => user.roles, {
|
||||||
|
|
|
@ -4,13 +4,13 @@ import { userPermission } from "./user_permission";
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class user {
|
export class user {
|
||||||
@PrimaryColumn({ generated: "increment", type: "int" })
|
@PrimaryColumn({ generated: "uuid", type: "varchar" })
|
||||||
id: number;
|
id: string;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", unique: true, length: 255 })
|
||||||
mail: string;
|
mail: string;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", unique: true, length: 255 })
|
||||||
username: string;
|
username: string;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255 })
|
||||||
|
|
|
@ -4,8 +4,8 @@ import { PermissionObject, PermissionString } from "../../type/permissionTypes";
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class userPermission {
|
export class userPermission {
|
||||||
@PrimaryColumn({ type: "int" })
|
@PrimaryColumn()
|
||||||
userId: number;
|
userId: string;
|
||||||
|
|
||||||
@PrimaryColumn({ type: "varchar", length: 255 })
|
@PrimaryColumn({ type: "varchar", length: 255 })
|
||||||
permission: PermissionString;
|
permission: PermissionString;
|
||||||
|
|
119
src/migrations/1738057119384-UniqueFields.ts
Normal file
119
src/migrations/1738057119384-UniqueFields.ts
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||||
|
|
||||||
|
export class UniqueFields1738057119384 implements MigrationInterface {
|
||||||
|
name = "UniqueFields1738057119384";
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`DROP INDEX \`UQ_6c6bdcaeb808549ae66c2493efd\` ON \`salutation\``);
|
||||||
|
await queryRunner.query(`DROP INDEX \`UQ_9ffb36037fb8d7456689956ed80\` ON \`query\``);
|
||||||
|
await queryRunner.query(`DROP INDEX \`UQ_424ac388ca888a1dc67f5fe3a80\` ON \`webapi\``);
|
||||||
|
await queryRunner.query(`DROP INDEX \`UQ_55c99c82f45936d8d34c48f5515\` ON \`webapi\``);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`award\` ADD UNIQUE INDEX \`IDX_646bbdb45883cc39c55740d7b6\` (\`award\`)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`protocol\` ADD UNIQUE INDEX \`IDX_e60159678b8dad84b2e7dfa20c\` (\`title\`)`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`calendar_type\` ADD UNIQUE INDEX \`IDX_fbcbfda68b80800afa78e21c88\` (\`type\`)`
|
||||||
|
);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`query\` ADD UNIQUE INDEX \`IDX_9ffb36037fb8d7456689956ed8\` (\`title\`)`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`template\` ADD UNIQUE INDEX \`IDX_9d0ad817708f4c1a7c78e4abf6\` (\`template\`)`
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`newsletter\` ADD UNIQUE INDEX \`IDX_80b2037e9f015eb2cf597bae6c\` (\`title\`)`
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`membership_status\` ADD UNIQUE INDEX \`IDX_9d71cc98acfae7a8276718f052\` (\`status\`)`
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`qualification\` ADD UNIQUE INDEX \`IDX_2d2540f8b970a5a43a905278da\` (\`qualification\`)`
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`executive_position\` ADD UNIQUE INDEX \`IDX_427169e456c217a317273c31d7\` (\`position\`)`
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`communication_type\` ADD UNIQUE INDEX \`IDX_63a3b23374fc0dd80e5ab32e09\` (\`type\`)`
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`salutation\` ADD UNIQUE INDEX \`IDX_6c6bdcaeb808549ae66c2493ef\` (\`salutation\`)`
|
||||||
|
);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`webapi\` ADD UNIQUE INDEX \`IDX_55c99c82f45936d8d34c48f551\` (\`token\`)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`webapi\` ADD UNIQUE INDEX \`IDX_424ac388ca888a1dc67f5fe3a8\` (\`title\`)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`role\` ADD UNIQUE INDEX \`IDX_367aad98203bd8afaed0d70409\` (\`role\`)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user\` ADD UNIQUE INDEX \`IDX_7395ecde6cda2e7fe90253ec59\` (\`mail\`)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user\` ADD UNIQUE INDEX \`IDX_78a916df40e02a9deb1c4b75ed\` (\`username\`)`);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user_permission\` DROP FOREIGN KEY \`FK_deb59c09715314aed1866e18a81\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`refresh\` DROP FOREIGN KEY \`FK_b39e4ed3bfa789758e476870ec2\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user_roles\` DROP FOREIGN KEY \`FK_472b25323af01488f1f66a06b67\``);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user\` MODIFY COLUMN \`id\` varchar(36) NOT NULL`);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user_permission\` MODIFY COLUMN \`userId\` varchar(36) NOT NULL`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`user_permission\` ADD CONSTRAINT \`FK_deb59c09715314aed1866e18a81\` FOREIGN KEY (\`userId\`) REFERENCES \`user\`(\`id\`) ON DELETE CASCADE ON UPDATE RESTRICT`
|
||||||
|
);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`refresh\` MODIFY COLUMN \`userId\` varchar(36) NOT NULL`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`refresh\` ADD CONSTRAINT \`FK_b39e4ed3bfa789758e476870ec2\` FOREIGN KEY (\`userId\`) REFERENCES \`user\`(\`id\`) ON DELETE CASCADE ON UPDATE RESTRICT`
|
||||||
|
);
|
||||||
|
|
||||||
|
await queryRunner.query(`DROP INDEX \`IDX_472b25323af01488f1f66a06b6\` ON \`user_roles\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user_roles\` MODIFY COLUMN \`userId\` varchar(36) NOT NULL`);
|
||||||
|
await queryRunner.query(`CREATE INDEX \`IDX_472b25323af01488f1f66a06b6\` ON \`user_roles\` (\`userId\`)`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`user_roles\` ADD CONSTRAINT \`FK_472b25323af01488f1f66a06b67\` FOREIGN KEY (\`userId\`) REFERENCES \`user\`(\`id\`) ON DELETE CASCADE ON UPDATE RESTRICT`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`ALTER TABLE \`webapi\` DROP INDEX \`IDX_424ac388ca888a1dc67f5fe3a8\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`webapi\` DROP INDEX \`IDX_55c99c82f45936d8d34c48f551\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`newsletter\` DROP INDEX \`IDX_80b2037e9f015eb2cf597bae6c\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`template\` DROP INDEX \`IDX_9d0ad817708f4c1a7c78e4abf6\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`query\` DROP INDEX \`IDX_9ffb36037fb8d7456689956ed8\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`calendar_type\` DROP INDEX \`IDX_fbcbfda68b80800afa78e21c88\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`protocol\` DROP INDEX \`IDX_e60159678b8dad84b2e7dfa20c\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`award\` DROP INDEX \`IDX_646bbdb45883cc39c55740d7b6\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`salutation\` DROP INDEX \`IDX_6c6bdcaeb808549ae66c2493ef\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`communication_type\` DROP INDEX \`IDX_63a3b23374fc0dd80e5ab32e09\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`executive_position\` DROP INDEX \`IDX_427169e456c217a317273c31d7\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`qualification\` DROP INDEX \`IDX_2d2540f8b970a5a43a905278da\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`membership_status\` DROP INDEX \`IDX_9d71cc98acfae7a8276718f052\``);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user_roles\` DROP FOREIGN KEY \`FK_472b25323af01488f1f66a06b67\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user_permission\` DROP FOREIGN KEY \`FK_deb59c09715314aed1866e18a81\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`refresh\` DROP FOREIGN KEY \`FK_b39e4ed3bfa789758e476870ec2\``);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user\` DROP INDEX \`IDX_78a916df40e02a9deb1c4b75ed\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user\` DROP INDEX \`IDX_7395ecde6cda2e7fe90253ec59\``);
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user\` MODIFY COLUMN \`id\` int NOT NULL AUTO_INCREMENT`);
|
||||||
|
|
||||||
|
await queryRunner.query(`DROP INDEX \`IDX_472b25323af01488f1f66a06b6\` ON \`user_roles\``);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`refresh\` MODIFY COLUMN \`userId\` int NOT NULL`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`refresh\` ADD CONSTRAINT \`FK_b39e4ed3bfa789758e476870ec2\` FOREIGN KEY (\`userId\`) REFERENCES \`user\`(\`id\`) ON DELETE CASCADE ON UPDATE RESTRICT`
|
||||||
|
);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user_permission\` MODIFY COLUMN \`userId\` int NOT NULL`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`user_permission\` ADD CONSTRAINT \`FK_deb59c09715314aed1866e18a81\` FOREIGN KEY (\`userId\`) REFERENCES \`user\`(\`id\`) ON DELETE CASCADE ON UPDATE RESTRICT`
|
||||||
|
);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`user_roles\` MODIFY COLUMN \`userId\` int NOT NULL`);
|
||||||
|
await queryRunner.query(`CREATE INDEX \`IDX_472b25323af01488f1f66a06b6\` ON \`user_roles\` (\`userId\`)`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE \`user_roles\` ADD CONSTRAINT \`FK_472b25323af01488f1f66a06b67\` FOREIGN KEY (\`userId\`) REFERENCES \`user\`(\`id\`) ON DELETE CASCADE ON UPDATE RESTRICT`
|
||||||
|
);
|
||||||
|
|
||||||
|
await queryRunner.query(`ALTER TABLE \`role\` DROP INDEX \`IDX_367aad98203bd8afaed0d70409\``);
|
||||||
|
|
||||||
|
await queryRunner.query(`CREATE UNIQUE INDEX \`UQ_55c99c82f45936d8d34c48f5515\` ON \`webapi\` (\`token\`)`);
|
||||||
|
await queryRunner.query(`CREATE UNIQUE INDEX \`UQ_424ac388ca888a1dc67f5fe3a80\` ON \`webapi\` (\`title\`)`);
|
||||||
|
await queryRunner.query(`CREATE UNIQUE INDEX \`UQ_9ffb36037fb8d7456689956ed80\` ON \`query\` (\`title\`)`);
|
||||||
|
await queryRunner.query(
|
||||||
|
`CREATE UNIQUE INDEX \`UQ_6c6bdcaeb808549ae66c2493efd\` ON \`salutation\` (\`salutation\`)`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue