summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/admin
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2022-03-27 22:42:05 +0900
committertamaina <tamaina@hotmail.co.jp>2022-03-27 22:42:05 +0900
commit7314643b8d80445bcc24c0056f9236763efec4de (patch)
tree2c2b67bb7bc406c0d2633eaddfa438c1f528138c /packages/backend/src/server/api/endpoints/admin
parentMerge branch 'develop' into pizzax-indexeddb (diff)
parentUpdate CONTRIBUTING.md (diff)
downloadmisskey-7314643b8d80445bcc24c0056f9236763efec4de.tar.gz
misskey-7314643b8d80445bcc24c0056f9236763efec4de.tar.bz2
misskey-7314643b8d80445bcc24c0056f9236763efec4de.zip
Merge branch 'develop' into pizzax-indexeddb
Diffstat (limited to 'packages/backend/src/server/api/endpoints/admin')
-rw-r--r--packages/backend/src/server/api/endpoints/admin/accounts/create.ts7
-rw-r--r--packages/backend/src/server/api/endpoints/admin/accounts/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/ad/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/ad/update.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/create.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/list.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/update.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/drive/show-file.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts7
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/add.ts8
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/copy.ts8
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts7
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/delete.ts6
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts7
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/update.ts6
-rw-r--r--packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts6
-rw-r--r--packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/get-index-stats.ts18
-rw-r--r--packages/backend/src/server/api/endpoints/admin/get-table-stats.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/meta.ts401
-rw-r--r--packages/backend/src/server/api/endpoints/admin/moderators/add.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/moderators/remove.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/promo/create.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/reset-password.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/server-info.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/show-user.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/silence-user.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/suspend-user.ts6
-rw-r--r--packages/backend/src/server/api/endpoints/admin/unsilence-user.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/update-meta.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/vacuum.ts4
40 files changed, 495 insertions, 78 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
index 2820c7993d..5f89219991 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
@@ -1,6 +1,7 @@
import define from '../../../define.js';
import { Users } from '@/models/index.js';
import { signup } from '../../../common/signup.js';
+import { IsNull } from 'typeorm';
export const meta = {
tags: ['admin'],
@@ -29,9 +30,9 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, _me) => {
- const me = _me ? await Users.findOneOrFail(_me.id) : null;
- const noUsers = (await Users.count({
- host: null,
+ const me = _me ? await Users.findOneByOrFail({ id: _me.id }) : null;
+ const noUsers = (await Users.countBy({
+ host: IsNull(),
})) === 0;
if (!noUsers && !me?.isAdmin) throw new Error('access denied');
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
index 01754ec8f3..629d700582 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
@@ -21,7 +21,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const user = await Users.findOne(ps.userId);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
diff --git a/packages/backend/src/server/api/endpoints/admin/ad/delete.ts b/packages/backend/src/server/api/endpoints/admin/ad/delete.ts
index 3663d974c5..0ead2be005 100644
--- a/packages/backend/src/server/api/endpoints/admin/ad/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/ad/delete.ts
@@ -27,7 +27,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const ad = await Ads.findOne(ps.id);
+ const ad = await Ads.findOneBy({ id: ps.id });
if (ad == null) throw new ApiError(meta.errors.noSuchAd);
diff --git a/packages/backend/src/server/api/endpoints/admin/ad/update.ts b/packages/backend/src/server/api/endpoints/admin/ad/update.ts
index 89c421db66..650f8670e3 100644
--- a/packages/backend/src/server/api/endpoints/admin/ad/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/ad/update.ts
@@ -34,7 +34,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const ad = await Ads.findOne(ps.id);
+ const ad = await Ads.findOneBy({ id: ps.id });
if (ad == null) throw new ApiError(meta.errors.noSuchAd);
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
index 41570078d4..33076b6d30 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
@@ -63,7 +63,7 @@ export default define(meta, paramDef, async (ps) => {
title: ps.title,
text: ps.text,
imageUrl: ps.imageUrl,
- }).then(x => Announcements.findOneOrFail(x.identifiers[0]));
+ }).then(x => Announcements.findOneByOrFail(x.identifiers[0]));
return Object.assign({}, announcement, { createdAt: announcement.createdAt.toISOString(), updatedAt: null });
});
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts b/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts
index 4871dc4e12..c17765f4fc 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts
@@ -27,7 +27,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const announcement = await Announcements.findOne(ps.id);
+ const announcement = await Announcements.findOneBy({ id: ps.id });
if (announcement == null) throw new ApiError(meta.errors.noSuchAnnouncement);
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 0ba0a8ee08..1d8eb1d618 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
@@ -69,7 +69,7 @@ export default define(meta, paramDef, async (ps) => {
const announcements = await query.take(ps.limit).getMany();
for (const announcement of announcements) {
- (announcement as any).reads = await AnnouncementReads.count({
+ (announcement as any).reads = await AnnouncementReads.countBy({
announcementId: announcement.id,
});
}
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/update.ts b/packages/backend/src/server/api/endpoints/admin/announcements/update.ts
index 138337ef5b..61ce106d88 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/update.ts
@@ -30,7 +30,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const announcement = await Announcements.findOne(ps.id);
+ const announcement = await Announcements.findOneBy({ id: ps.id });
if (announcement == null) throw new ApiError(meta.errors.noSuchAnnouncement);
diff --git a/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts b/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
index 90e65ec4cd..dc1976624d 100644
--- a/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
@@ -19,7 +19,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const files = await DriveFiles.find({
+ const files = await DriveFiles.findBy({
userId: ps.userId,
});
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts b/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts
index 3e7d43fb0b..3db942e6cd 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts
@@ -18,7 +18,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const files = await DriveFiles.find({
+ const files = await DriveFiles.findBy({
userId: IsNull(),
});
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
index e821160095..4b27fc0188 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
@@ -160,7 +160,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const file = ps.fileId ? await DriveFiles.findOne(ps.fileId) : await DriveFiles.findOne({
+ const file = ps.fileId ? await DriveFiles.findOneBy({ id: ps.fileId }) : await DriveFiles.findOne({
where: [{
url: ps.url,
}, {
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts
index 77a4adea61..232fbbd573 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts
@@ -1,7 +1,8 @@
import define from '../../../define.js';
import { Emojis } from '@/models/index.js';
-import { getConnection, In } from 'typeorm';
+import { In } from 'typeorm';
import { ApiError } from '../../../error.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -25,7 +26,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps) => {
- const emojis = await Emojis.find({
+ const emojis = await Emojis.findBy({
id: In(ps.ids),
});
@@ -36,5 +37,5 @@ export default define(meta, paramDef, async (ps) => {
});
}
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
index c5787d59dc..67349c24e0 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
@@ -1,11 +1,11 @@
import define from '../../../define.js';
import { Emojis, DriveFiles } from '@/models/index.js';
import { genId } from '@/misc/gen-id.js';
-import { getConnection } from 'typeorm';
import { insertModerationLog } from '@/services/insert-moderation-log.js';
import { ApiError } from '../../../error.js';
import rndstr from 'rndstr';
import { publishBroadcastStream } from '@/services/stream.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -32,7 +32,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const file = await DriveFiles.findOne(ps.fileId);
+ const file = await DriveFiles.findOneBy({ id: ps.fileId });
if (file == null) throw new ApiError(meta.errors.noSuchFile);
@@ -48,9 +48,9 @@ export default define(meta, paramDef, async (ps, me) => {
originalUrl: file.url,
publicUrl: file.webpublicUrl ?? file.url,
type: file.webpublicType ?? file.type,
- }).then(x => Emojis.findOneOrFail(x.identifiers[0]));
+ }).then(x => Emojis.findOneByOrFail(x.identifiers[0]));
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
publishBroadcastStream('emojiAdded', {
emoji: await Emojis.pack(emoji.id),
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
index a0eaa61258..7010ade0d8 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
@@ -1,11 +1,11 @@
import define from '../../../define.js';
import { Emojis } from '@/models/index.js';
import { genId } from '@/misc/gen-id.js';
-import { getConnection } from 'typeorm';
import { ApiError } from '../../../error.js';
import { DriveFile } from '@/models/entities/drive-file.js';
import { uploadFromUrl } from '@/services/drive/upload-from-url.js';
import { publishBroadcastStream } from '@/services/stream.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -44,7 +44,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const emoji = await Emojis.findOne(ps.emojiId);
+ const emoji = await Emojis.findOneBy({ id: ps.emojiId });
if (emoji == null) {
throw new ApiError(meta.errors.noSuchEmoji);
@@ -68,9 +68,9 @@ export default define(meta, paramDef, async (ps, me) => {
originalUrl: driveFile.url,
publicUrl: driveFile.webpublicUrl ?? driveFile.url,
type: driveFile.webpublicType ?? driveFile.type,
- }).then(x => Emojis.findOneOrFail(x.identifiers[0]));
+ }).then(x => Emojis.findOneByOrFail(x.identifiers[0]));
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
publishBroadcastStream('emojiAdded', {
emoji: await Emojis.pack(copied.id),
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts
index 38a2d65cf6..93a6c4e4e2 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts
@@ -1,8 +1,9 @@
import define from '../../../define.js';
import { Emojis } from '@/models/index.js';
-import { getConnection, In } from 'typeorm';
+import { In } from 'typeorm';
import { insertModerationLog } from '@/services/insert-moderation-log.js';
import { ApiError } from '../../../error.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -23,14 +24,14 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const emojis = await Emojis.find({
+ const emojis = await Emojis.findBy({
id: In(ps.ids),
});
for (const emoji of emojis) {
await Emojis.delete(emoji.id);
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
insertModerationLog(me, 'deleteEmoji', {
emoji: emoji,
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts
index a0cffb47f8..67dbf28d85 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts
@@ -1,8 +1,8 @@
import define from '../../../define.js';
import { Emojis } from '@/models/index.js';
-import { getConnection } from 'typeorm';
import { insertModerationLog } from '@/services/insert-moderation-log.js';
import { ApiError } from '../../../error.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -29,13 +29,13 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const emoji = await Emojis.findOne(ps.id);
+ const emoji = await Emojis.findOneBy({ id: ps.id });
if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
await Emojis.delete(emoji.id);
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
insertModerationLog(me, 'deleteEmoji', {
emoji: emoji,
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts
index dbad93d336..a4da40fffd 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts
@@ -1,7 +1,8 @@
import define from '../../../define.js';
import { Emojis } from '@/models/index.js';
-import { getConnection, In } from 'typeorm';
+import { In } from 'typeorm';
import { ApiError } from '../../../error.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -25,7 +26,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps) => {
- const emojis = await Emojis.find({
+ const emojis = await Emojis.findBy({
id: In(ps.ids),
});
@@ -36,5 +37,5 @@ export default define(meta, paramDef, async (ps) => {
});
}
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts
index 470b9bef08..ae3b190f40 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts
@@ -1,7 +1,8 @@
import define from '../../../define.js';
import { Emojis } from '@/models/index.js';
-import { getConnection, In } from 'typeorm';
+import { In } from 'typeorm';
import { ApiError } from '../../../error.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -32,5 +33,5 @@ export default define(meta, paramDef, async (ps) => {
aliases: ps.aliases,
});
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts
index 40e4c0199e..6063f3e3be 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts
@@ -1,7 +1,8 @@
import define from '../../../define.js';
import { Emojis } from '@/models/index.js';
-import { getConnection, In } from 'typeorm';
+import { In } from 'typeorm';
import { ApiError } from '../../../error.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -30,5 +31,5 @@ export default define(meta, paramDef, async (ps) => {
category: ps.category,
});
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
index c6d07e16fa..e26514e0ca 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
@@ -1,7 +1,7 @@
import define from '../../../define.js';
import { Emojis } from '@/models/index.js';
-import { getConnection } from 'typeorm';
import { ApiError } from '../../../error.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -33,7 +33,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps) => {
- const emoji = await Emojis.findOne(ps.id);
+ const emoji = await Emojis.findOneBy({ id: ps.id });
if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
@@ -44,5 +44,5 @@ export default define(meta, paramDef, async (ps) => {
aliases: ps.aliases,
});
- await getConnection().queryResultCache!.remove(['meta_emojis']);
+ await db.queryResultCache!.remove(['meta_emojis']);
});
diff --git a/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts b/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts
index d4251f2feb..da54201473 100644
--- a/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts
+++ b/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts
@@ -19,7 +19,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const files = await DriveFiles.find({
+ const files = await DriveFiles.findBy({
userHost: ps.host,
});
diff --git a/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts b/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
index 86978cc309..cb2be5ab37 100644
--- a/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
+++ b/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
@@ -20,7 +20,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const instance = await Instances.findOne({ host: toPuny(ps.host) });
+ const instance = await Instances.findOneBy({ host: toPuny(ps.host) });
if (instance == null) {
throw new Error('instance not found');
diff --git a/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts b/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts
index ccd07489cb..b7ee27db64 100644
--- a/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts
+++ b/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts
@@ -19,13 +19,13 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const followings = await Followings.find({
+ const followings = await Followings.findBy({
followerHost: ps.host,
});
const pairs = await Promise.all(followings.map(f => Promise.all([
- Users.findOneOrFail(f.followerId),
- Users.findOneOrFail(f.followeeId),
+ Users.findOneByOrFail({ id: f.followerId }),
+ Users.findOneByOrFail({ id: f.followeeId }),
])));
for (const pair of pairs) {
diff --git a/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts b/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts
index 1981082428..278131fb37 100644
--- a/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts
+++ b/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts
@@ -20,7 +20,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const instance = await Instances.findOne({ host: toPuny(ps.host) });
+ const instance = await Instances.findOneBy({ host: toPuny(ps.host) });
if (instance == null) {
throw new Error('instance not found');
diff --git a/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts b/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts
index 37878c4143..dd16473f30 100644
--- a/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts
+++ b/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts
@@ -1,5 +1,5 @@
import define from '../../define.js';
-import { getConnection } from 'typeorm';
+import { db } from '@/db/postgre.js';
export const meta = {
requireCredential: true,
@@ -16,15 +16,13 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async () => {
- const stats = await
- getConnection().query(`SELECT * FROM pg_indexes;`)
- .then(recs => {
- const res = [] as { tablename: string; indexname: string; }[];
- for (const rec of recs) {
- res.push(rec);
- }
- return res;
- });
+ const stats = await db.query(`SELECT * FROM pg_indexes;`).then(recs => {
+ const res = [] as { tablename: string; indexname: string; }[];
+ for (const rec of recs) {
+ res.push(rec);
+ }
+ return res;
+ });
return stats;
});
diff --git a/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts b/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts
index 7cf2d5ffd4..aca2540fd5 100644
--- a/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts
+++ b/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts
@@ -1,5 +1,5 @@
+import { db } from '@/db/postgre.js';
import define from '../../define.js';
-import { getConnection } from 'typeorm';
export const meta = {
requireCredential: true,
@@ -28,7 +28,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async () => {
const sizes = await
- getConnection().query(`
+ db.query(`
SELECT relname AS "table", reltuples as "count", pg_total_relation_size(C.oid) AS "size"
FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts
new file mode 100644
index 0000000000..8d50486ef6
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/meta.ts
@@ -0,0 +1,401 @@
+import config from '@/config/index.js';
+import define from '../../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
+
+export const meta = {
+ tags: ['meta'],
+
+ requireCredential: true,
+ requireAdmin: true,
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ driveCapacityPerLocalUserMb: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ driveCapacityPerRemoteUserMb: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ cacheRemoteFiles: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ emailRequiredForSignup: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableHcaptcha: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ hcaptchaSiteKey: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ enableRecaptcha: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ recaptchaSiteKey: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ swPublickey: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ mascotImageUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ default: '/assets/ai.png',
+ },
+ bannerUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ errorImageUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ default: 'https://xn--931a.moe/aiart/yubitun.png',
+ },
+ iconUrl: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ maxNoteTextLength: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ emojis: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ id: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'id',
+ },
+ aliases: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ },
+ category: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ host: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ url: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'url',
+ },
+ },
+ },
+ },
+ ads: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ place: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ url: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'url',
+ },
+ imageUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'url',
+ },
+ },
+ },
+ },
+ enableEmail: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableTwitterIntegration: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableGithubIntegration: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableDiscordIntegration: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableServiceWorker: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ translatorAvailable: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ proxyAccountName: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ userStarForReactionFallback: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ pinnedUsers: {
+ type: 'array',
+ optional: true, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ },
+ hiddenTags: {
+ type: 'array',
+ optional: true, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ },
+ blockedHosts: {
+ type: 'array',
+ optional: true, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ },
+ hcaptchaSecretKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ recaptchaSecretKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ proxyAccountId: {
+ type: 'string',
+ optional: true, nullable: true,
+ format: 'id',
+ },
+ twitterConsumerKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ twitterConsumerSecret: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ githubClientId: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ githubClientSecret: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ discordClientId: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ discordClientSecret: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ summaryProxy: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ email: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ smtpSecure: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ smtpHost: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ smtpPort: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ smtpUser: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ smtpPass: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ swPrivateKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ useObjectStorage: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ objectStorageBaseUrl: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageBucket: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStoragePrefix: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageEndpoint: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageRegion: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStoragePort: {
+ type: 'number',
+ optional: true, nullable: true,
+ },
+ objectStorageAccessKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageSecretKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageUseSSL: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ objectStorageUseProxy: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ objectStorageSetPublicRead: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ },
+ },
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ },
+ required: [],
+} as const;
+
+// eslint-disable-next-line import/no-default-export
+export default define(meta, paramDef, async (ps, me) => {
+ const instance = await fetchMeta(true);
+
+ return {
+ maintainerName: instance.maintainerName,
+ maintainerEmail: instance.maintainerEmail,
+ version: config.version,
+ name: instance.name,
+ uri: config.url,
+ description: instance.description,
+ langs: instance.langs,
+ tosUrl: instance.ToSUrl,
+ repositoryUrl: instance.repositoryUrl,
+ feedbackUrl: instance.feedbackUrl,
+ disableRegistration: instance.disableRegistration,
+ disableLocalTimeline: instance.disableLocalTimeline,
+ disableGlobalTimeline: instance.disableGlobalTimeline,
+ driveCapacityPerLocalUserMb: instance.localDriveCapacityMb,
+ driveCapacityPerRemoteUserMb: instance.remoteDriveCapacityMb,
+ emailRequiredForSignup: instance.emailRequiredForSignup,
+ enableHcaptcha: instance.enableHcaptcha,
+ hcaptchaSiteKey: instance.hcaptchaSiteKey,
+ enableRecaptcha: instance.enableRecaptcha,
+ recaptchaSiteKey: instance.recaptchaSiteKey,
+ swPublickey: instance.swPublicKey,
+ themeColor: instance.themeColor,
+ mascotImageUrl: instance.mascotImageUrl,
+ bannerUrl: instance.bannerUrl,
+ errorImageUrl: instance.errorImageUrl,
+ iconUrl: instance.iconUrl,
+ backgroundImageUrl: instance.backgroundImageUrl,
+ logoImageUrl: instance.logoImageUrl,
+ maxNoteTextLength: MAX_NOTE_TEXT_LENGTH, // 後方互換性のため
+ defaultLightTheme: instance.defaultLightTheme,
+ defaultDarkTheme: instance.defaultDarkTheme,
+ enableEmail: instance.enableEmail,
+ enableTwitterIntegration: instance.enableTwitterIntegration,
+ enableGithubIntegration: instance.enableGithubIntegration,
+ enableDiscordIntegration: instance.enableDiscordIntegration,
+ enableServiceWorker: instance.enableServiceWorker,
+ translatorAvailable: instance.deeplAuthKey != null,
+ pinnedPages: instance.pinnedPages,
+ pinnedClipId: instance.pinnedClipId,
+ cacheRemoteFiles: instance.cacheRemoteFiles,
+
+ useStarForReactionFallback: instance.useStarForReactionFallback,
+ pinnedUsers: instance.pinnedUsers,
+ hiddenTags: instance.hiddenTags,
+ blockedHosts: instance.blockedHosts,
+ hcaptchaSecretKey: instance.hcaptchaSecretKey,
+ recaptchaSecretKey: instance.recaptchaSecretKey,
+ proxyAccountId: instance.proxyAccountId,
+ twitterConsumerKey: instance.twitterConsumerKey,
+ twitterConsumerSecret: instance.twitterConsumerSecret,
+ githubClientId: instance.githubClientId,
+ githubClientSecret: instance.githubClientSecret,
+ discordClientId: instance.discordClientId,
+ discordClientSecret: instance.discordClientSecret,
+ summalyProxy: instance.summalyProxy,
+ email: instance.email,
+ smtpSecure: instance.smtpSecure,
+ smtpHost: instance.smtpHost,
+ smtpPort: instance.smtpPort,
+ smtpUser: instance.smtpUser,
+ smtpPass: instance.smtpPass,
+ swPrivateKey: instance.swPrivateKey,
+ useObjectStorage: instance.useObjectStorage,
+ objectStorageBaseUrl: instance.objectStorageBaseUrl,
+ objectStorageBucket: instance.objectStorageBucket,
+ objectStoragePrefix: instance.objectStoragePrefix,
+ objectStorageEndpoint: instance.objectStorageEndpoint,
+ objectStorageRegion: instance.objectStorageRegion,
+ objectStoragePort: instance.objectStoragePort,
+ objectStorageAccessKey: instance.objectStorageAccessKey,
+ objectStorageSecretKey: instance.objectStorageSecretKey,
+ objectStorageUseSSL: instance.objectStorageUseSSL,
+ objectStorageUseProxy: instance.objectStorageUseProxy,
+ objectStorageSetPublicRead: instance.objectStorageSetPublicRead,
+ objectStorageS3ForcePathStyle: instance.objectStorageS3ForcePathStyle,
+ deeplAuthKey: instance.deeplAuthKey,
+ deeplIsPro: instance.deeplIsPro,
+ };
+});
diff --git a/packages/backend/src/server/api/endpoints/admin/moderators/add.ts b/packages/backend/src/server/api/endpoints/admin/moderators/add.ts
index 4206e3a3c2..7b209c2d99 100644
--- a/packages/backend/src/server/api/endpoints/admin/moderators/add.ts
+++ b/packages/backend/src/server/api/endpoints/admin/moderators/add.ts
@@ -1,5 +1,6 @@
import define from '../../../define.js';
import { Users } from '@/models/index.js';
+import { publishInternalEvent } from '@/services/stream.js';
export const meta = {
tags: ['admin'],
@@ -18,7 +19,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps) => {
- const user = await Users.findOne(ps.userId as string);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
@@ -31,4 +32,6 @@ export default define(meta, paramDef, async (ps) => {
await Users.update(user.id, {
isModerator: true,
});
+
+ publishInternalEvent('userChangeModeratorState', { id: user.id, isModerator: true });
});
diff --git a/packages/backend/src/server/api/endpoints/admin/moderators/remove.ts b/packages/backend/src/server/api/endpoints/admin/moderators/remove.ts
index 143119bfe4..b85a677e81 100644
--- a/packages/backend/src/server/api/endpoints/admin/moderators/remove.ts
+++ b/packages/backend/src/server/api/endpoints/admin/moderators/remove.ts
@@ -18,7 +18,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps) => {
- const user = await Users.findOne(ps.userId as string);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
@@ -27,4 +27,6 @@ export default define(meta, paramDef, async (ps) => {
await Users.update(user.id, {
isModerator: false,
});
+
+ publishInternalEvent('userChangeModeratorState', { id: user.id, isModerator: false });
});
diff --git a/packages/backend/src/server/api/endpoints/admin/promo/create.ts b/packages/backend/src/server/api/endpoints/admin/promo/create.ts
index 2eec5bf0db..68a17867b2 100644
--- a/packages/backend/src/server/api/endpoints/admin/promo/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/promo/create.ts
@@ -40,7 +40,7 @@ export default define(meta, paramDef, async (ps, user) => {
throw e;
});
- const exist = await PromoNotes.findOne(note.id);
+ const exist = await PromoNotes.findOneBy({ noteId: note.id });
if (exist != null) {
throw new ApiError(meta.errors.alreadyPromoted);
diff --git a/packages/backend/src/server/api/endpoints/admin/reset-password.ts b/packages/backend/src/server/api/endpoints/admin/reset-password.ts
index 1fd5c8d5a5..be4c2dceed 100644
--- a/packages/backend/src/server/api/endpoints/admin/reset-password.ts
+++ b/packages/backend/src/server/api/endpoints/admin/reset-password.ts
@@ -33,7 +33,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps) => {
- const user = await Users.findOne(ps.userId as string);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
diff --git a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
index a9e5658413..3edae4a85f 100644
--- a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
+++ b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
@@ -23,7 +23,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const report = await AbuseUserReports.findOne(ps.reportId);
+ const report = await AbuseUserReports.findOneByOrFail({ id: ps.reportId });
if (report == null) {
throw new Error('report not found');
@@ -31,7 +31,7 @@ export default define(meta, paramDef, async (ps, me) => {
if (ps.forward && report.targetUserHost != null) {
const actor = await getInstanceActor();
- const targetUser = await Users.findOneOrFail(report.targetUserId);
+ const targetUser = await Users.findOneByOrFail({ id: report.targetUserId });
deliver(actor, renderActivity(renderFlag(actor, [targetUser.uri!], report.comment)), targetUser.inbox);
}
diff --git a/packages/backend/src/server/api/endpoints/admin/server-info.ts b/packages/backend/src/server/api/endpoints/admin/server-info.ts
index 8bf1c4341c..9c150420b1 100644
--- a/packages/backend/src/server/api/endpoints/admin/server-info.ts
+++ b/packages/backend/src/server/api/endpoints/admin/server-info.ts
@@ -1,8 +1,8 @@
import * as os from 'node:os';
import si from 'systeminformation';
-import { getConnection } from 'typeorm';
import define from '../../define.js';
import { redisClient } from '../../../../db/redis.js';
+import { db } from '@/db/postgre.js';
export const meta = {
requireCredential: true,
@@ -103,7 +103,7 @@ export default define(meta, paramDef, async () => {
machine: os.hostname(),
os: os.platform(),
node: process.version,
- psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version),
+ psql: await db.query('SHOW server_version').then(x => x[0].server_version),
redis: redisClient.server_info.redis_version,
cpu: {
model: os.cpus()[0].model,
diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts
index a435dcc288..bf6cc16532 100644
--- a/packages/backend/src/server/api/endpoints/admin/show-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts
@@ -23,13 +23,14 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const user = await Users.findOne(ps.userId as string);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
}
- if ((me.isModerator && !me.isAdmin) && user.isAdmin) {
+ const _me = await Users.findOneByOrFail({ id: me.id });
+ if ((_me.isModerator && !_me.isAdmin) && user.isAdmin) {
throw new Error('cannot show info of admin');
}
diff --git a/packages/backend/src/server/api/endpoints/admin/silence-user.ts b/packages/backend/src/server/api/endpoints/admin/silence-user.ts
index 4a74c3fb00..17b9f3b5a0 100644
--- a/packages/backend/src/server/api/endpoints/admin/silence-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/silence-user.ts
@@ -1,6 +1,7 @@
import define from '../../define.js';
import { Users } from '@/models/index.js';
import { insertModerationLog } from '@/services/insert-moderation-log.js';
+import { publishInternalEvent } from '@/services/stream.js';
export const meta = {
tags: ['admin'],
@@ -19,7 +20,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const user = await Users.findOne(ps.userId as string);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
@@ -33,6 +34,8 @@ export default define(meta, paramDef, async (ps, me) => {
isSilenced: true,
});
+ publishInternalEvent('userChangeSilencedState', { id: user.id, isSilenced: true });
+
insertModerationLog(me, 'silence', {
targetId: user.id,
});
diff --git a/packages/backend/src/server/api/endpoints/admin/suspend-user.ts b/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
index adaa7b86ce..ed513eda08 100644
--- a/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
@@ -23,7 +23,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const user = await Users.findOne(ps.userId as string);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
@@ -58,12 +58,12 @@ export default define(meta, paramDef, async (ps, me) => {
});
async function unFollowAll(follower: User) {
- const followings = await Followings.find({
+ const followings = await Followings.findBy({
followerId: follower.id,
});
for (const following of followings) {
- const followee = await Users.findOne({
+ const followee = await Users.findOneBy({
id: following.followeeId,
});
diff --git a/packages/backend/src/server/api/endpoints/admin/unsilence-user.ts b/packages/backend/src/server/api/endpoints/admin/unsilence-user.ts
index 4e6366aa18..a4b373f5c7 100644
--- a/packages/backend/src/server/api/endpoints/admin/unsilence-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/unsilence-user.ts
@@ -1,6 +1,7 @@
import define from '../../define.js';
import { Users } from '@/models/index.js';
import { insertModerationLog } from '@/services/insert-moderation-log.js';
+import { publishInternalEvent } from '@/services/stream.js';
export const meta = {
tags: ['admin'],
@@ -19,7 +20,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const user = await Users.findOne(ps.userId as string);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
@@ -29,6 +30,8 @@ export default define(meta, paramDef, async (ps, me) => {
isSilenced: false,
});
+ publishInternalEvent('userChangeSilencedState', { id: user.id, isSilenced: false });
+
insertModerationLog(me, 'unsilence', {
targetId: user.id,
});
diff --git a/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts b/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts
index 3b9e0a94e0..5cf26251be 100644
--- a/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts
@@ -20,7 +20,7 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => {
- const user = await Users.findOne(ps.userId as string);
+ const user = await Users.findOneBy({ id: ps.userId });
if (user == null) {
throw new Error('user not found');
diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
index 66b634c877..3c39bf0f30 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
@@ -1,8 +1,8 @@
import define from '../../define.js';
-import { getConnection } from 'typeorm';
import { Meta } from '@/models/entities/meta.js';
import { insertModerationLog } from '@/services/insert-moderation-log.js';
import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -396,7 +396,7 @@ export default define(meta, paramDef, async (ps, me) => {
set.deeplIsPro = ps.deeplIsPro;
}
- await getConnection().transaction(async transactionalEntityManager => {
+ await db.transaction(async transactionalEntityManager => {
const meta = await transactionalEntityManager.findOne(Meta, {
order: {
id: 'DESC',
diff --git a/packages/backend/src/server/api/endpoints/admin/vacuum.ts b/packages/backend/src/server/api/endpoints/admin/vacuum.ts
index 4c04e019da..0546acfacb 100644
--- a/packages/backend/src/server/api/endpoints/admin/vacuum.ts
+++ b/packages/backend/src/server/api/endpoints/admin/vacuum.ts
@@ -1,6 +1,6 @@
import define from '../../define.js';
-import { getConnection } from 'typeorm';
import { insertModerationLog } from '@/services/insert-moderation-log.js';
+import { db } from '@/db/postgre.js';
export const meta = {
tags: ['admin'],
@@ -30,7 +30,7 @@ export default define(meta, paramDef, async (ps, me) => {
params.push('ANALYZE');
}
- getConnection().query('VACUUM ' + params.join(' '));
+ db.query('VACUUM ' + params.join(' '));
insertModerationLog(me, 'vacuum', ps);
});