From a671f9102d5d3e212d1e621a435dd6a147c4e191 Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Sun, 17 Apr 2022 13:31:45 +0900
Subject: [PATCH] refactor: fix type

---
 .../api/endpoints/admin/announcements/list.ts | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
index 1d8eb1d618..7a5758d75b 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
@@ -1,5 +1,6 @@
-import define from '../../../define.js';
 import { Announcements, AnnouncementReads } from '@/models/index.js';
+import { Announcement } from '@/models/entities/announcement.js';
+import define from '../../../define.js';
 import { makePaginationQuery } from '../../../common/make-pagination-query.js';
 
 export const meta = {
@@ -68,11 +69,21 @@ export default define(meta, paramDef, async (ps) => {
 
 	const announcements = await query.take(ps.limit).getMany();
 
+	const reads = new Map<Announcement, number>();
+
 	for (const announcement of announcements) {
-		(announcement as any).reads = await AnnouncementReads.countBy({
+		reads.set(announcement, await AnnouncementReads.countBy({
 			announcementId: announcement.id,
-		});
+		}));
 	}
 
-	return announcements;
+	return announcements.map(announcement => ({
+		id: announcement.id,
+		createdAt: announcement.createdAt.toISOString(),
+		updatedAt: announcement.updatedAt?.toISOString() ?? null,
+		title: announcement.title,
+		text: announcement.text,
+		imageUrl: announcement.imageUrl,
+		reads: reads.get(announcement)!,
+	}));
 });