From 0e4a111f81cceed275d9bec2695f6e401fb654d8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 12 Nov 2021 02:02:25 +0900 Subject: refactoring Resolve #7779 --- .../api/endpoints/admin/announcements/create.ts | 71 ------------------ .../api/endpoints/admin/announcements/delete.ts | 34 --------- .../api/endpoints/admin/announcements/list.ts | 84 ---------------------- .../api/endpoints/admin/announcements/update.ts | 48 ------------- 4 files changed, 237 deletions(-) delete mode 100644 src/server/api/endpoints/admin/announcements/create.ts delete mode 100644 src/server/api/endpoints/admin/announcements/delete.ts delete mode 100644 src/server/api/endpoints/admin/announcements/list.ts delete mode 100644 src/server/api/endpoints/admin/announcements/update.ts (limited to 'src/server/api/endpoints/admin/announcements') diff --git a/src/server/api/endpoints/admin/announcements/create.ts b/src/server/api/endpoints/admin/announcements/create.ts deleted file mode 100644 index f1c07745f9..0000000000 --- a/src/server/api/endpoints/admin/announcements/create.ts +++ /dev/null @@ -1,71 +0,0 @@ -import $ from 'cafy'; -import define from '../../../define'; -import { Announcements } from '@/models/index'; -import { genId } from '@/misc/gen-id'; - -export const meta = { - tags: ['admin'], - - requireCredential: true as const, - requireModerator: true, - - params: { - title: { - validator: $.str.min(1) - }, - text: { - validator: $.str.min(1) - }, - imageUrl: { - validator: $.nullable.str.min(1) - } - }, - - res: { - type: 'object' as const, - optional: false as const, nullable: false as const, - properties: { - id: { - type: 'string' as const, - optional: false as const, nullable: false as const, - format: 'id', - example: 'xxxxxxxxxx', - }, - createdAt: { - type: 'string' as const, - optional: false as const, nullable: false as const, - format: 'date-time', - }, - updatedAt: { - type: 'string' as const, - optional: false as const, nullable: true as const, - format: 'date-time', - }, - title: { - type: 'string' as const, - optional: false as const, nullable: false as const, - }, - text: { - type: 'string' as const, - optional: false as const, nullable: false as const, - }, - imageUrl: { - type: 'string' as const, - optional: false as const, nullable: true as const, - } - } - } -}; - -export default define(meta, async (ps) => { - const announcement = await Announcements.save({ - id: genId(), - createdAt: new Date(), - updatedAt: null, - title: ps.title, - text: ps.text, - imageUrl: ps.imageUrl, - }); - - return announcement; -}); diff --git a/src/server/api/endpoints/admin/announcements/delete.ts b/src/server/api/endpoints/admin/announcements/delete.ts deleted file mode 100644 index 7dbc05b4c9..0000000000 --- a/src/server/api/endpoints/admin/announcements/delete.ts +++ /dev/null @@ -1,34 +0,0 @@ -import $ from 'cafy'; -import define from '../../../define'; -import { ID } from '@/misc/cafy-id'; -import { Announcements } from '@/models/index'; -import { ApiError } from '../../../error'; - -export const meta = { - tags: ['admin'], - - requireCredential: true as const, - requireModerator: true, - - params: { - id: { - validator: $.type(ID) - } - }, - - errors: { - noSuchAnnouncement: { - message: 'No such announcement.', - code: 'NO_SUCH_ANNOUNCEMENT', - id: 'ecad8040-a276-4e85-bda9-015a708d291e' - } - } -}; - -export default define(meta, async (ps, me) => { - const announcement = await Announcements.findOne(ps.id); - - if (announcement == null) throw new ApiError(meta.errors.noSuchAnnouncement); - - await Announcements.delete(announcement.id); -}); diff --git a/src/server/api/endpoints/admin/announcements/list.ts b/src/server/api/endpoints/admin/announcements/list.ts deleted file mode 100644 index 4039bcd88f..0000000000 --- a/src/server/api/endpoints/admin/announcements/list.ts +++ /dev/null @@ -1,84 +0,0 @@ -import $ from 'cafy'; -import { ID } from '@/misc/cafy-id'; -import define from '../../../define'; -import { Announcements, AnnouncementReads } from '@/models/index'; -import { makePaginationQuery } from '../../../common/make-pagination-query'; - -export const meta = { - tags: ['admin'], - - requireCredential: true as const, - requireModerator: true, - - params: { - limit: { - validator: $.optional.num.range(1, 100), - default: 10 - }, - - sinceId: { - validator: $.optional.type(ID), - }, - - untilId: { - validator: $.optional.type(ID), - }, - }, - - res: { - type: 'array' as const, - optional: false as const, nullable: false as const, - items: { - type: 'object' as const, - optional: false as const, nullable: false as const, - properties: { - id: { - type: 'string' as const, - optional: false as const, nullable: false as const, - format: 'id', - example: 'xxxxxxxxxx', - }, - createdAt: { - type: 'string' as const, - optional: false as const, nullable: false as const, - format: 'date-time', - }, - updatedAt: { - type: 'string' as const, - optional: false as const, nullable: true as const, - format: 'date-time', - }, - text: { - type: 'string' as const, - optional: false as const, nullable: false as const, - }, - title: { - type: 'string' as const, - optional: false as const, nullable: false as const, - }, - imageUrl: { - type: 'string' as const, - optional: false as const, nullable: true as const, - }, - reads: { - type: 'number' as const, - optional: false as const, nullable: false as const, - } - } - } - } -}; - -export default define(meta, async (ps) => { - const query = makePaginationQuery(Announcements.createQueryBuilder('announcement'), ps.sinceId, ps.untilId); - - const announcements = await query.take(ps.limit!).getMany(); - - for (const announcement of announcements) { - (announcement as any).reads = await AnnouncementReads.count({ - announcementId: announcement.id - }); - } - - return announcements; -}); diff --git a/src/server/api/endpoints/admin/announcements/update.ts b/src/server/api/endpoints/admin/announcements/update.ts deleted file mode 100644 index 343f37d626..0000000000 --- a/src/server/api/endpoints/admin/announcements/update.ts +++ /dev/null @@ -1,48 +0,0 @@ -import $ from 'cafy'; -import define from '../../../define'; -import { ID } from '@/misc/cafy-id'; -import { Announcements } from '@/models/index'; -import { ApiError } from '../../../error'; - -export const meta = { - tags: ['admin'], - - requireCredential: true as const, - requireModerator: true, - - params: { - id: { - validator: $.type(ID) - }, - title: { - validator: $.str.min(1) - }, - text: { - validator: $.str.min(1) - }, - imageUrl: { - validator: $.nullable.str.min(1) - } - }, - - errors: { - noSuchAnnouncement: { - message: 'No such announcement.', - code: 'NO_SUCH_ANNOUNCEMENT', - id: 'd3aae5a7-6372-4cb4-b61c-f511ffc2d7cc' - } - } -}; - -export default define(meta, async (ps, me) => { - const announcement = await Announcements.findOne(ps.id); - - if (announcement == null) throw new ApiError(meta.errors.noSuchAnnouncement); - - await Announcements.update(announcement.id, { - updatedAt: new Date(), - title: ps.title, - text: ps.text, - imageUrl: ps.imageUrl, - }); -}); -- cgit v1.2.3-freya