From b8b461f0dba77eb0714fa8af3d33c92e376fdc0f Mon Sep 17 00:00:00 2001 From: CyberL1 Date: Sun, 13 Jul 2025 07:30:17 +0200 Subject: [PATCH] fix: getting message pinss --- .../channels/#channel_id/messages/pins/index.ts | 13 +++++++++++-- src/util/entities/Message.ts | 3 +++ .../postgres/1752383879533-message_pinned_at.ts | 17 +++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/util/migration/postgres/1752383879533-message_pinned_at.ts diff --git a/src/api/routes/channels/#channel_id/messages/pins/index.ts b/src/api/routes/channels/#channel_id/messages/pins/index.ts index 32e3e901..717f5d5a 100644 --- a/src/api/routes/channels/#channel_id/messages/pins/index.ts +++ b/src/api/routes/channels/#channel_id/messages/pins/index.ts @@ -63,6 +63,7 @@ router.put( throw DiscordApiErrors.MAXIMUM_PINS.withParams(maxPins); message.pinned = true; + message.pinned_at = new Date(); const author = await User.getPublicUser(req.user_id); @@ -182,11 +183,19 @@ router.get( const pins = await Message.find({ where: { channel_id: channel_id, pinned: true }, relations: ["author"], + order: { + pinned_at: "DESC", + }, }); + const items = pins.map((message) => ({ + message, + pinned_at: message.pinned_at, + })); + res.send({ - items: pins, - has_more: false + items, + has_more: false, }); }, ); diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts index 236ee587..b089a196 100644 --- a/src/util/entities/Message.ts +++ b/src/util/entities/Message.ts @@ -188,6 +188,9 @@ export class Message extends BaseClass { @Column({ nullable: true }) pinned?: boolean; + @Column({ nullable: true }) + pinned_at?: Date; + @Column({ type: "int" }) type: MessageType; diff --git a/src/util/migration/postgres/1752383879533-message_pinned_at.ts b/src/util/migration/postgres/1752383879533-message_pinned_at.ts new file mode 100644 index 00000000..f96d284c --- /dev/null +++ b/src/util/migration/postgres/1752383879533-message_pinned_at.ts @@ -0,0 +1,17 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class MessagePinnedAt1752383879533 implements MigrationInterface { + name = "MessagePinnedAt1752383879533"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "messages" ADD "pinned_at" TIMESTAMP`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "messages" DROP COLUMN "pinned_at"`, + ); + } +}