mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-08-26 06:09:41 +00:00
71 lines
3.8 KiB
TypeScript
71 lines
3.8 KiB
TypeScript
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
|
|
export class CreateSavingGoalsEntities1734246386471 implements MigrationInterface {
|
|
name = 'CreateSavingGoalsEntities1734246386471';
|
|
|
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.query(
|
|
`CREATE TABLE "saving_goals"
|
|
("id" uuid NOT NULL DEFAULT uuid_generate_v4(),
|
|
"name" character varying(255) NOT NULL,
|
|
"description" character varying(255),
|
|
"due_date" date NOT NULL,
|
|
"target_amount" numeric(12,3) NOT NULL,
|
|
"current_amount" numeric(12,3) NOT NULL DEFAULT '0',
|
|
"image_id" uuid, "junior_id" uuid NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT now(),
|
|
"updated_at" TIMESTAMP NOT NULL DEFAULT now(),
|
|
CONSTRAINT "PK_5193f14c1c3a38e6657a159795e" PRIMARY KEY ("id"))`,
|
|
);
|
|
await queryRunner.query(
|
|
`CREATE TABLE "categories"
|
|
("id" uuid NOT NULL DEFAULT uuid_generate_v4(),
|
|
"name" character varying(255) NOT NULL,
|
|
"type" character varying(255) NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT now(),
|
|
"updated_at" TIMESTAMP NOT NULL DEFAULT now(),
|
|
"junior_id" uuid, CONSTRAINT "PK_24dbc6126a28ff948da33e97d3b" PRIMARY KEY ("id"))`,
|
|
);
|
|
await queryRunner.query(
|
|
`CREATE TABLE "saving_goals_categories"
|
|
("saving_goal_id" uuid NOT NULL,
|
|
"category_id" uuid NOT NULL,
|
|
CONSTRAINT "PK_a49d4f57d06d0a36a8385b6c28f" PRIMARY KEY ("saving_goal_id", "category_id"))`,
|
|
);
|
|
await queryRunner.query(
|
|
`CREATE INDEX "IDX_d421de423f21c01672ea7c2e98" ON "saving_goals_categories" ("saving_goal_id") `,
|
|
);
|
|
await queryRunner.query(
|
|
`CREATE INDEX "IDX_b0a721a8f7f5b6fe93f3603ebc" ON "saving_goals_categories" ("category_id") `,
|
|
);
|
|
await queryRunner.query(
|
|
`ALTER TABLE "saving_goals" ADD CONSTRAINT "FK_dad35932272342c1a247a2cee1c" FOREIGN KEY ("image_id") REFERENCES "documents"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
);
|
|
await queryRunner.query(
|
|
`ALTER TABLE "saving_goals" ADD CONSTRAINT "FK_f494ba0a361b2f9cbe5f6e56e38" FOREIGN KEY ("junior_id") REFERENCES "juniors"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
);
|
|
await queryRunner.query(
|
|
`ALTER TABLE "categories" ADD CONSTRAINT "FK_4f98e0b010d5e90cae0a2007748" FOREIGN KEY ("junior_id") REFERENCES "juniors"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
);
|
|
await queryRunner.query(
|
|
`ALTER TABLE "saving_goals_categories" ADD CONSTRAINT "FK_d421de423f21c01672ea7c2e98f" FOREIGN KEY ("saving_goal_id") REFERENCES "saving_goals"("id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
);
|
|
await queryRunner.query(
|
|
`ALTER TABLE "saving_goals_categories" ADD CONSTRAINT "FK_b0a721a8f7f5b6fe93f3603ebc8" FOREIGN KEY ("category_id") REFERENCES "categories"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
|
|
);
|
|
}
|
|
|
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.query(`ALTER TABLE "saving_goals_categories" DROP CONSTRAINT "FK_b0a721a8f7f5b6fe93f3603ebc8"`);
|
|
await queryRunner.query(`ALTER TABLE "saving_goals_categories" DROP CONSTRAINT "FK_d421de423f21c01672ea7c2e98f"`);
|
|
await queryRunner.query(`ALTER TABLE "categories" DROP CONSTRAINT "FK_4f98e0b010d5e90cae0a2007748"`);
|
|
await queryRunner.query(`ALTER TABLE "saving_goals" DROP CONSTRAINT "FK_f494ba0a361b2f9cbe5f6e56e38"`);
|
|
await queryRunner.query(`ALTER TABLE "saving_goals" DROP CONSTRAINT "FK_dad35932272342c1a247a2cee1c"`);
|
|
await queryRunner.query(`DROP INDEX "public"."IDX_b0a721a8f7f5b6fe93f3603ebc"`);
|
|
await queryRunner.query(`DROP INDEX "public"."IDX_d421de423f21c01672ea7c2e98"`);
|
|
await queryRunner.query(`DROP TABLE "saving_goals_categories"`);
|
|
await queryRunner.query(`DROP TABLE "categories"`);
|
|
await queryRunner.query(`DROP TABLE "saving_goals"`);
|
|
}
|
|
}
|