Skip to content

Commit 3205654

Browse files
committed
feat: add endpoint to get NirilaDeleteUserLogRepository
1 parent 9e58ab0 commit 3205654

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

packages/backend/src/server/api/EndpointsModule.ts

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import { Module } from '@nestjs/common';
77

88
import { CoreModule } from '@/core/CoreModule.js';
9+
import * as ep___admin_nirilaDeleteUserLogAccess from './endpoints/admin/nirila-delete-user-log-access.js';
910
import * as ep___admin_meta from './endpoints/admin/meta.js';
1011
import * as ep___admin_abuseUserReports from './endpoints/admin/abuse-user-reports.js';
1112
import * as ep___admin_accounts_create from './endpoints/admin/accounts/create.js';
@@ -368,6 +369,7 @@ import { GetterService } from './GetterService.js';
368369
import { ApiLoggerService } from './ApiLoggerService.js';
369370
import type { Provider } from '@nestjs/common';
370371

372+
const $admin_nirilaDeleteUserLogAccess: Provider = { provide: 'ep:admin/nirila-delete-user-log-access', useClass: ep___admin_nirilaDeleteUserLogAccess.default };
371373
const $admin_meta: Provider = { provide: 'ep:admin/meta', useClass: ep___admin_meta.default };
372374
const $admin_abuseUserReports: Provider = { provide: 'ep:admin/abuse-user-reports', useClass: ep___admin_abuseUserReports.default };
373375
const $admin_accounts_create: Provider = { provide: 'ep:admin/accounts/create', useClass: ep___admin_accounts_create.default };
@@ -734,6 +736,7 @@ const $retention: Provider = { provide: 'ep:retention', useClass: ep___retention
734736
providers: [
735737
GetterService,
736738
ApiLoggerService,
739+
$admin_nirilaDeleteUserLogAccess,
737740
$admin_meta,
738741
$admin_abuseUserReports,
739742
$admin_accounts_create,
@@ -1094,6 +1097,7 @@ const $retention: Provider = { provide: 'ep:retention', useClass: ep___retention
10941097
$retention,
10951098
],
10961099
exports: [
1100+
$admin_nirilaDeleteUserLogAccess,
10971101
$admin_meta,
10981102
$admin_abuseUserReports,
10991103
$admin_accounts_create,

packages/backend/src/server/api/endpoints.ts

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type { Schema } from '@/misc/json-schema.js';
77
import { permissions } from 'misskey-js';
88
import { RolePolicies } from '@/core/RoleService.js';
99

10+
import * as ep___admin_nirilaDeleteUserLogAccess from './endpoints/admin/nirila-delete-user-log-access.js';
1011
import * as ep___admin_meta from './endpoints/admin/meta.js';
1112
import * as ep___admin_abuseUserReports from './endpoints/admin/abuse-user-reports.js';
1213
import * as ep___admin_accounts_create from './endpoints/admin/accounts/create.js';
@@ -367,6 +368,7 @@ import * as ep___fetchExternalResources from './endpoints/fetch-external-resourc
367368
import * as ep___retention from './endpoints/retention.js';
368369

369370
const eps = [
371+
['admin/nirila-delete-user-log-access', ep___admin_nirilaDeleteUserLogAccess],
370372
['admin/meta', ep___admin_meta],
371373
['admin/abuse-user-reports', ep___admin_abuseUserReports],
372374
['admin/accounts/create', ep___admin_accounts_create],
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* SPDX-FileCopyrightText: anatawa12
3+
* SPDX-License-Identifier: AGPL-3.0-only
4+
*/
5+
6+
import { Inject, Injectable } from '@nestjs/common';
7+
import type { NirilaDeleteUserLogRepository } from '@/models/_.js';
8+
import { Endpoint } from '@/server/api/endpoint-base.js';
9+
import { DI } from '@/di-symbols.js';
10+
import { ApiError } from '@/server/api/error.js';
11+
import { QueryService } from '@/core/QueryService.js';
12+
13+
export const meta = {
14+
tags: ['admin'],
15+
16+
requireCredential: true,
17+
requireModerator: true,
18+
secure: true,
19+
kind: 'read:admin:nirila-delete-user-log-access',
20+
21+
errors: {
22+
notFound: {
23+
message: 'DeleteLog satisfies the request not found',
24+
code: 'NOT_FOUND',
25+
id: 'd29927d1-5b8c-4200-aa05-5537722ee7ab',
26+
},
27+
},
28+
29+
res: { type: 'any' }, // no type data
30+
} as const;
31+
32+
export const paramDef = {
33+
type: 'object',
34+
properties: {
35+
limit: { type: 'integer', minimum: 1, maximum: 100, default: 10 },
36+
sinceId: { type: 'string', format: 'misskey:id' },
37+
untilId: { type: 'string', format: 'misskey:id' },
38+
39+
// access single by id
40+
email: { type: 'string' },
41+
username: { type: 'string' },
42+
userId: { type: 'string', format: 'misskey:id' },
43+
},
44+
required: [],
45+
} as const;
46+
47+
@Injectable()
48+
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
49+
constructor(
50+
@Inject(DI.nirilaDeleteUserLogRepository)
51+
private nirilaDeleteUserLogRepository: NirilaDeleteUserLogRepository,
52+
53+
private queryService: QueryService,
54+
) {
55+
super(meta, paramDef, async (ps, me) => {
56+
// single query
57+
if (ps.email) {
58+
const found = await this.nirilaDeleteUserLogRepository.findOneBy({ email: ps.email });
59+
if (!found) throw new ApiError(meta.errors.notFound);
60+
return found.info;
61+
}
62+
63+
if (ps.username) {
64+
const found = await this.nirilaDeleteUserLogRepository.findOneBy({ username: ps.username });
65+
if (!found) throw new ApiError(meta.errors.notFound);
66+
return found.info;
67+
}
68+
69+
if (ps.userId) {
70+
const found = await this.nirilaDeleteUserLogRepository.findOneBy({ userId: ps.userId });
71+
if (!found) throw new ApiError(meta.errors.notFound);
72+
return found.info;
73+
}
74+
75+
// list query
76+
77+
const logs = await this.queryService.makePaginationQuery(this.nirilaDeleteUserLogRepository.createQueryBuilder('deleteLog'), ps.sinceId, ps.untilId)
78+
.limit(ps.limit)
79+
.getMany();
80+
81+
return logs.map(x => Object.assign(x.info, { id: x.id }));
82+
});
83+
}
84+
}

packages/misskey-js/src/consts.ts

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export const followingVisibilities = ['public', 'followers', 'private'] as const
99
export const followersVisibilities = ['public', 'followers', 'private'] as const;
1010

1111
export const permissions = [
12+
'read:admin:nirila-delete-user-log-access',
1213
'read:account',
1314
'write:account',
1415
'read:blocks',

0 commit comments

Comments
 (0)