From a5a9540eac78f8bb7fe78ceba41dea61341e322a Mon Sep 17 00:00:00 2001 From: tamaina Date: Mon, 5 Jun 2023 06:09:43 +0000 Subject: [PATCH] wip --- .../api/endpoints/charts/user/following.ts | 27 +++---------------- packages/misskey-js/src/endpoints.ts | 24 +++++++++++++++-- packages/misskey-js/src/schemas.ts | 2 +- 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/charts/user/following.ts b/packages/backend/src/server/api/endpoints/charts/user/following.ts index 3f50918fa7..a6cc6ae8cc 100644 --- a/packages/backend/src/server/api/endpoints/charts/user/following.ts +++ b/packages/backend/src/server/api/endpoints/charts/user/following.ts @@ -1,36 +1,15 @@ import { Injectable } from '@nestjs/common'; import { Endpoint } from '@/server/api/endpoint-base.js'; -import { getJsonSchema } from '@/core/chart/core.js'; import PerUserFollowingChart from '@/core/chart/charts/per-user-following.js'; -import { schema } from '@/core/chart/charts/entities/per-user-following.js'; - -export const meta = { - tags: ['charts', 'users', 'following'], - - res: getJsonSchema(schema), - - allowGet: true, - cacheSec: 60 * 60, -} as const; - -export const paramDef = { - type: 'object', - properties: { - span: { type: 'string', enum: ['day', 'hour'] }, - limit: { type: 'integer', minimum: 1, maximum: 500, default: 30 }, - offset: { type: 'integer', nullable: true, default: null }, - userId: { type: 'string', format: 'misskey:id' }, - }, - required: ['span', 'userId'], -} as const; // eslint-disable-next-line import/no-default-export @Injectable() -export default class extends Endpoint { +export default class extends Endpoint<'charts/user/following'> { + name = 'charts/user/following' as const; constructor( private perUserFollowingChart: PerUserFollowingChart, ) { - super(meta, paramDef, async (ps, me) => { + super(async (ps, me) => { return await this.perUserFollowingChart.getChart(ps.span, ps.limit, ps.offset ? new Date(ps.offset) : null, ps.userId); }); } diff --git a/packages/misskey-js/src/endpoints.ts b/packages/misskey-js/src/endpoints.ts index 59a93549c4..618665f62a 100644 --- a/packages/misskey-js/src/endpoints.ts +++ b/packages/misskey-js/src/endpoints.ts @@ -2,7 +2,7 @@ import type { JSONSchema7 } from 'schema-type'; import { IEndpointMeta } from './endpoints.types'; import { localUsernameSchema, passwordSchema } from './schemas/user'; import ms from 'ms'; -import { getJsonSchema } from './schemas'; +import { chartSchemaToJSONSchema } from './schemas'; import { chartsSchemas } from './schemas/charts.js'; export const endpoints = { @@ -3005,7 +3005,27 @@ export const endpoints = { }, required: ['span', 'userId'], }, - res: getJsonSchema(chartsSchemas.perUserDrive) satisfies JSONSchema7, + res: chartSchemaToJSONSchema(chartsSchemas.perUserDrive) satisfies JSONSchema7, + }], + }, + 'charts/user/following': { + tags: ['charts', 'users', 'following'], + + allowGet: true, + cacheSec: 60 * 60, + + defines: [{ + req: { + type: 'object', + properties: { + span: { type: 'string', enum: ['day', 'hour'] }, + limit: { type: 'integer', minimum: 1, maximum: 500, default: 30 }, + offset: { type: 'integer', nullable: true, default: null }, + userId: { type: 'string', format: 'misskey:id' }, + }, + required: ['span', 'userId'], + }, + res: chartSchemaToJSONSchema(chartsSchemas.perUserFollowing) satisfies JSONSchema7, }], }, //#endregion diff --git a/packages/misskey-js/src/schemas.ts b/packages/misskey-js/src/schemas.ts index efd507dbee..6475fdc15b 100644 --- a/packages/misskey-js/src/schemas.ts +++ b/packages/misskey-js/src/schemas.ts @@ -157,7 +157,7 @@ type ToJsonSchema = { required: (keyof S)[]; }; -export function getJsonSchema(schema: S): ToJsonSchema>> { +export function chartSchemaToJSONSchema(schema: S): ToJsonSchema>> { const jsonSchema = { type: 'object', properties: {} as Record,