mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-10-25 06:57:55 +00:00
feat: working on saving goals jounrey for juniors
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
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"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||||
import { CategoryType } from '~/saving-goals/enums';
|
||||
const DEFAULT_CATEGORIES = [
|
||||
{
|
||||
name: 'School',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
{
|
||||
name: 'Toys',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
{
|
||||
name: 'Games',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
{
|
||||
name: 'Clothes',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
{
|
||||
name: 'Hobbies',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
{
|
||||
name: 'Party',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
{
|
||||
name: 'Sport',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
{
|
||||
name: 'University',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
{
|
||||
name: 'Travel',
|
||||
type: CategoryType.GLOBAL,
|
||||
},
|
||||
];
|
||||
export class SeedsGoalsCategories1734247702310 implements MigrationInterface {
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`INSERT INTO categories (name, type) VALUES ${DEFAULT_CATEGORIES.map(
|
||||
(category) => `('${category.name}', '${category.type}')`,
|
||||
)}`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`DELETE FROM categories WHERE name IN (${DEFAULT_CATEGORIES.map(
|
||||
(category) => `'${category.name}'`,
|
||||
)}) AND type = '${CategoryType.GLOBAL}'`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -10,3 +10,5 @@ export * from './1733750228289-seed-default-avatar';
|
||||
export * from './1733904556416-create-task-entities';
|
||||
export * from './1733990253208-seeds-default-tasks-logo';
|
||||
export * from './1733993920226-create-customer-notifications-settings-table';
|
||||
export * from './1734246386471-create-saving-goals-entities';
|
||||
export * from './1734247702310-seeds-goals-categories';
|
||||
|
||||
Reference in New Issue
Block a user