From 2357497d3ac1bf1ef6eac415e7a311ac8cc090ca Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Thu, 29 May 2025 11:12:33 +0200 Subject: [PATCH] enhance: sort newsletter by creation date --- src/data-source.ts | 2 ++ src/entity/club/newsletter/newsletter.ts | 5 ++++- .../1748509435932-addDateToNewsletter.ts | 21 +++++++++++++++++++ .../club/newsletter/newsletterService.ts | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/migrations/1748509435932-addDateToNewsletter.ts diff --git a/src/data-source.ts b/src/data-source.ts index 63de0f8..bb96819 100644 --- a/src/data-source.ts +++ b/src/data-source.ts @@ -56,6 +56,7 @@ import { SettingsFromEnv1745059495807 } from "./migrations/1745059495807-setting import { MemberCreatedAt1746006549262 } from "./migrations/1746006549262-memberCreatedAt"; import { UserLoginRoutine1746252454922 } from "./migrations/1746252454922-UserLoginRoutine"; import { SettingsFromEnv_SET1745059495808 } from "./migrations/1745059495808-settingsFromEnv_set"; +import { AddDateToNewsletter1748509435932 } from "./migrations/1748509435932-addDateToNewsletter"; configCheck(); @@ -123,6 +124,7 @@ const dataSource = new DataSource({ SettingsFromEnv_SET1745059495808, MemberCreatedAt1746006549262, UserLoginRoutine1746252454922, + AddDateToNewsletter1748509435932, ], migrationsRun: true, migrationsTransactionMode: "each", diff --git a/src/entity/club/newsletter/newsletter.ts b/src/entity/club/newsletter/newsletter.ts index 24258b4..ead7052 100644 --- a/src/entity/club/newsletter/newsletter.ts +++ b/src/entity/club/newsletter/newsletter.ts @@ -1,4 +1,4 @@ -import { Column, Entity, ManyToOne, OneToMany, PrimaryColumn } from "typeorm"; +import { Column, CreateDateColumn, Entity, ManyToOne, OneToMany, PrimaryColumn } from "typeorm"; import { newsletterDates } from "./newsletterDates"; import { newsletterRecipients } from "./newsletterRecipients"; import { query } from "../../configuration/query"; @@ -14,6 +14,9 @@ export class newsletter { @Column({ type: "varchar", length: 255, default: "" }) description: string; + @CreateDateColumn() + createdAt: Date; + @Column({ type: "text", default: "" }) newsletterTitle: string; diff --git a/src/migrations/1748509435932-addDateToNewsletter.ts b/src/migrations/1748509435932-addDateToNewsletter.ts new file mode 100644 index 0000000..5f4b8fa --- /dev/null +++ b/src/migrations/1748509435932-addDateToNewsletter.ts @@ -0,0 +1,21 @@ +import { MigrationInterface, QueryRunner, TableColumn } from "typeorm"; +import { getTypeByORM, getDefaultByORM } from "./ormHelper"; + +export class AddDateToNewsletter1748509435932 implements MigrationInterface { + name = "AddDateToNewsletter1748509435932"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.addColumn( + "newsletter", + new TableColumn({ + name: "createdAt", + ...getTypeByORM("datetime", false, 6), + default: getDefaultByORM("currentTimestamp", 6), + }) + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn("newsletter", "createdAt"); + } +} diff --git a/src/service/club/newsletter/newsletterService.ts b/src/service/club/newsletter/newsletterService.ts index 27489d0..b11bfd7 100644 --- a/src/service/club/newsletter/newsletterService.ts +++ b/src/service/club/newsletter/newsletterService.ts @@ -12,6 +12,7 @@ export default abstract class NewsletterService { return await dataSource .getRepository(newsletter) .createQueryBuilder("newsletter") + .orderBy("createdAt", "DESC") .offset(offset) .limit(count) .getManyAndCount()