From b359a7c5d7505e2dd304b48e19fc3ea1a4407afc Mon Sep 17 00:00:00 2001 From: salamca Date: Fri, 6 Oct 2023 12:37:19 +0200 Subject: [PATCH 1/2] Make activityByMonth field of crag entity non nullable. --- src/crags/entities/crag.entity.ts | 4 ++-- ...696588233248-activityByMonthNonNullable.ts | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/migration/1696588233248-activityByMonthNonNullable.ts diff --git a/src/crags/entities/crag.entity.ts b/src/crags/entities/crag.entity.ts index f4e8725..74ca741 100644 --- a/src/crags/entities/crag.entity.ts +++ b/src/crags/entities/crag.entity.ts @@ -174,7 +174,7 @@ export class Crag extends BaseEntity { @Column({ name: 'user_id', nullable: true }) userId: string; - @Column({ type: 'int', array: true, nullable: true }) - @Field(() => [Int], { nullable: true }) + @Column({ type: 'int', array: true }) + @Field(() => [Int]) activityByMonth: number[]; } diff --git a/src/migration/1696588233248-activityByMonthNonNullable.ts b/src/migration/1696588233248-activityByMonthNonNullable.ts new file mode 100644 index 0000000..38bafb9 --- /dev/null +++ b/src/migration/1696588233248-activityByMonthNonNullable.ts @@ -0,0 +1,19 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class activityByMonthNonNullable1696588233248 + implements MigrationInterface +{ + name = 'activityByMonthNonNullable1696588233248'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "crag" ALTER COLUMN "activity_by_month" SET NOT NULL`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "crag" ALTER COLUMN "activity_by_month" DROP NOT NULL`, + ); + } +} From 4ea1e5b47a620fdbe534de40cb9af05a1bd2324f Mon Sep 17 00:00:00 2001 From: salamca Date: Sat, 7 Oct 2023 10:49:31 +0200 Subject: [PATCH 2/2] Fix test helpers, add default value to crag entity. --- src/crags/entities/crag.entity.ts | 6 +++++- ...696588233248-activityByMonthNonNullable.ts | 6 ++++++ test/e2e/helpers.ts | 20 +++++++++---------- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/crags/entities/crag.entity.ts b/src/crags/entities/crag.entity.ts index 74ca741..bfc7ca7 100644 --- a/src/crags/entities/crag.entity.ts +++ b/src/crags/entities/crag.entity.ts @@ -174,7 +174,11 @@ export class Crag extends BaseEntity { @Column({ name: 'user_id', nullable: true }) userId: string; - @Column({ type: 'int', array: true }) + @Column({ + type: 'int', + array: true, + default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + }) @Field(() => [Int]) activityByMonth: number[]; } diff --git a/src/migration/1696588233248-activityByMonthNonNullable.ts b/src/migration/1696588233248-activityByMonthNonNullable.ts index 38bafb9..022039e 100644 --- a/src/migration/1696588233248-activityByMonthNonNullable.ts +++ b/src/migration/1696588233248-activityByMonthNonNullable.ts @@ -9,9 +9,15 @@ export class activityByMonthNonNullable1696588233248 await queryRunner.query( `ALTER TABLE "crag" ALTER COLUMN "activity_by_month" SET NOT NULL`, ); + await queryRunner.query( + `ALTER TABLE "crag" ALTER COLUMN "activity_by_month" SET DEFAULT '{0,0,0,0,0,0,0,0,0,0,0,0}'`, + ); } public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "crag" ALTER COLUMN "activity_by_month" DROP DEFAULT`, + ); await queryRunner.query( `ALTER TABLE "crag" ALTER COLUMN "activity_by_month" DROP NOT NULL`, ); diff --git a/test/e2e/helpers.ts b/test/e2e/helpers.ts index 42bbbcc..fdaf2df 100644 --- a/test/e2e/helpers.ts +++ b/test/e2e/helpers.ts @@ -378,28 +378,28 @@ const seedDatabase = async (qr: QueryRunner, app) => { // Add some crags // published crag await qr.query( - `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id) - VALUES ('${mockData.crags.publishedCrag.id}', 'Kot Tečnik', '${mockData.crags.publishedCrag.slug}', '${mockData.countries.slovenia.id}', 'french', 'sport', 'published', false, '${mockData.users.basicUser1.id}')`, + `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id, activity_by_month) + VALUES ('${mockData.crags.publishedCrag.id}', 'Kot Tečnik', '${mockData.crags.publishedCrag.slug}', '${mockData.countries.slovenia.id}', 'french', 'sport', 'published', false, '${mockData.users.basicUser1.id}', '{0,0,0,0,0,0,0,0,0,0,0,0}')`, ); // in review crag await qr.query( - `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id) - VALUES ('${mockData.crags.inReviewCrag.id}', 'Podstenčnik', 'podstencnik', '${mockData.countries.slovenia.id}', 'french', 'sport', 'in_review', false, '${mockData.users.basicUser1.id}')`, + `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id, activity_by_month) + VALUES ('${mockData.crags.inReviewCrag.id}', 'Podstenčnik', 'podstencnik', '${mockData.countries.slovenia.id}', 'french', 'sport', 'in_review', false, '${mockData.users.basicUser1.id}', '{0,0,0,0,0,0,0,0,0,0,0,0}')`, ); // draft crag await qr.query( - `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id) - VALUES ('${mockData.crags.draftCrag.id}', 'Nova grapa', 'nova-grapa', '${mockData.countries.slovenia.id}', 'french', 'sport', 'draft', false, '${mockData.users.basicUser1.id}')`, + `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id, activity_by_month) + VALUES ('${mockData.crags.draftCrag.id}', 'Nova grapa', 'nova-grapa', '${mockData.countries.slovenia.id}', 'french', 'sport', 'draft', false, '${mockData.users.basicUser1.id}', '{0,0,0,0,0,0,0,0,0,0,0,0}')`, ); // crag with multiple sectors await qr.query( - `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id) - VALUES ('${mockData.crags.cragWithMultipleSectors.id}', 'Cre tata', '${mockData.crags.cragWithMultipleSectors.slug}', '${mockData.countries.slovenia.id}', 'french', 'sport', 'published', false, '${mockData.users.basicUser1.id}')`, + `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id, activity_by_month) + VALUES ('${mockData.crags.cragWithMultipleSectors.id}', 'Cre tata', '${mockData.crags.cragWithMultipleSectors.slug}', '${mockData.countries.slovenia.id}', 'french', 'sport', 'published', false, '${mockData.users.basicUser1.id}', '{0,0,0,0,0,0,0,0,0,0,0,0}')`, ); // simple crag await qr.query( - `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id) - VALUES ('${mockData.crags.simpleCrag.id}', 'Cragus simplus', '${mockData.crags.simpleCrag.slug}', '${mockData.countries.slovenia.id}', 'french', 'sport', 'published', false, '${mockData.users.basicUser1.id}')`, + `INSERT INTO crag (id, name, slug, country_id, default_grading_system_id, type, publish_status, is_hidden, user_id, activity_by_month) + VALUES ('${mockData.crags.simpleCrag.id}', 'Cragus simplus', '${mockData.crags.simpleCrag.slug}', '${mockData.countries.slovenia.id}', 'french', 'sport', 'published', false, '${mockData.users.basicUser1.id}', '{0,0,0,0,0,0,0,0,0,0,0,0}')`, ); // Add some sectors