diff options
Diffstat (limited to 'src/server/api/endpoints/admin')
25 files changed, 199 insertions, 374 deletions
diff --git a/src/server/api/endpoints/admin/abuse-user-reports.ts b/src/server/api/endpoints/admin/abuse-user-reports.ts index d9fe3429ce..5c5a734c1d 100644 --- a/src/server/api/endpoints/admin/abuse-user-reports.ts +++ b/src/server/api/endpoints/admin/abuse-user-reports.ts @@ -1,7 +1,8 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; -import Report, { packMany } from '../../../../models/abuse-user-report'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; +import { AbuseUserReports } from '../../../../models'; +import { makePaginationQuery } from '../../common/make-pagination-query'; export const meta = { tags: ['admin'], @@ -17,37 +18,18 @@ export const meta = { sinceId: { validator: $.optional.type(ID), - transform: transform, }, untilId: { validator: $.optional.type(ID), - transform: transform, }, } }; export default define(meta, async (ps) => { - const sort = { - _id: -1 - }; - const query = {} as any; - if (ps.sinceId) { - sort._id = 1; - query._id = { - $gt: ps.sinceId - }; - } else if (ps.untilId) { - query._id = { - $lt: ps.untilId - }; - } + const query = makePaginationQuery(AbuseUserReports.createQueryBuilder('report'), ps.sinceId, ps.untilId); - const reports = await Report - .find(query, { - limit: ps.limit, - sort: sort - }); + const reports = await query.take(ps.limit).getMany(); - return await packMany(reports); + return await AbuseUserReports.packMany(reports); }); diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts index 8ed417a429..1ccabc92d9 100644 --- a/src/server/api/endpoints/admin/drive/files.ts +++ b/src/server/api/endpoints/admin/drive/files.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import File, { packMany } from '../../../../../models/drive-file'; import define from '../../../define'; import { fallback } from '../../../../../prelude/symbol'; +import { DriveFiles } from '../../../../../models'; export const meta = { tags: ['admin'], @@ -41,27 +41,25 @@ export const meta = { }; const sort: any = { // < https://github.com/Microsoft/TypeScript/issues/1863 - '+createdAt': { uploadDate: -1 }, - '-createdAt': { uploadDate: 1 }, - '+size': { length: -1 }, - '-size': { length: 1 }, - [fallback]: { _id: -1 } + '+createdAt': { createdAt: -1 }, + '-createdAt': { createdAt: 1 }, + '+size': { size: -1 }, + '-size': { size: 1 }, + [fallback]: { id: -1 } }; export default define(meta, async (ps, me) => { - const q = { - 'metadata.deletedAt': { $exists: false }, - } as any; + const q = {} as any; - if (ps.origin == 'local') q['metadata._user.host'] = null; - if (ps.origin == 'remote') q['metadata._user.host'] = { $ne: null }; + if (ps.origin == 'local') q['userHost'] = null; + if (ps.origin == 'remote') q['userHost'] = { $ne: null }; - const files = await File - .find(q, { - limit: ps.limit, - sort: sort[ps.sort] || sort[fallback], - skip: ps.offset - }); + const files = await DriveFiles.find({ + where: q, + take: ps.limit, + order: sort[ps.sort] || sort[fallback], + skip: ps.offset + }); - return await packMany(files, { detail: true, withUser: true, self: true }); + return await DriveFiles.packMany(files, { detail: true, withUser: true, self: true }); }); diff --git a/src/server/api/endpoints/admin/drive/show-file.ts b/src/server/api/endpoints/admin/drive/show-file.ts index 405b6d44ce..a2b6c158f0 100644 --- a/src/server/api/endpoints/admin/drive/show-file.ts +++ b/src/server/api/endpoints/admin/drive/show-file.ts @@ -1,8 +1,8 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../../misc/cafy-id'; +import { ID } from '../../../../../misc/cafy-id'; import define from '../../../define'; -import DriveFile from '../../../../../models/drive-file'; import { ApiError } from '../../../error'; +import { DriveFiles } from '../../../../../models'; export const meta = { tags: ['admin'], @@ -13,7 +13,6 @@ export const meta = { params: { fileId: { validator: $.type(ID), - transform: transform, }, }, @@ -27,9 +26,7 @@ export const meta = { }; export default define(meta, async (ps, me) => { - const file = await DriveFile.findOne({ - _id: ps.fileId - }); + const file = await DriveFiles.findOne(ps.fileId); if (file == null) { throw new ApiError(meta.errors.noSuchFile); diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts index c126c8380f..c26e8dd04d 100644 --- a/src/server/api/endpoints/admin/emoji/add.ts +++ b/src/server/api/endpoints/admin/emoji/add.ts @@ -1,7 +1,8 @@ import $ from 'cafy'; -import Emoji from '../../../../../models/emoji'; import define from '../../../define'; import { detectUrlMine } from '../../../../../misc/detect-url-mine'; +import { Emojis } from '../../../../../models'; +import { genId } from '../../../../../misc/gen-id'; export const meta = { desc: { @@ -32,7 +33,8 @@ export const meta = { export default define(meta, async (ps) => { const type = await detectUrlMine(ps.url); - const emoji = await Emoji.insert({ + const emoji = await Emojis.save({ + id: genId(), updatedAt: new Date(), name: ps.name, host: null, @@ -42,6 +44,6 @@ export default define(meta, async (ps) => { }); return { - id: emoji._id + id: emoji.id }; }); diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts index 954f8f96c6..07174723b9 100644 --- a/src/server/api/endpoints/admin/emoji/list.ts +++ b/src/server/api/endpoints/admin/emoji/list.ts @@ -1,6 +1,6 @@ import $ from 'cafy'; -import Emoji from '../../../../../models/emoji'; import define from '../../../define'; +import { Emojis } from '../../../../../models'; export const meta = { desc: { @@ -21,12 +21,12 @@ export const meta = { }; export default define(meta, async (ps) => { - const emojis = await Emoji.find({ + const emojis = await Emojis.find({ host: ps.host }); return emojis.map(e => ({ - id: e._id, + id: e.id, name: e.name, aliases: e.aliases, host: e.host, diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts index 4c69dffbae..316834b884 100644 --- a/src/server/api/endpoints/admin/emoji/remove.ts +++ b/src/server/api/endpoints/admin/emoji/remove.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import Emoji from '../../../../../models/emoji'; import define from '../../../define'; -import ID from '../../../../../misc/cafy-id'; +import { ID } from '../../../../../misc/cafy-id'; +import { Emojis } from '../../../../../models'; export const meta = { desc: { @@ -21,13 +21,9 @@ export const meta = { }; export default define(meta, async (ps) => { - const emoji = await Emoji.findOne({ - _id: ps.id - }); + const emoji = await Emojis.findOne(ps.id); if (emoji == null) throw new Error('emoji not found'); - await Emoji.remove({ _id: emoji._id }); - - return; + await Emojis.delete(emoji.id); }); diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts index 8b1c07be9e..48b4a4ee23 100644 --- a/src/server/api/endpoints/admin/emoji/update.ts +++ b/src/server/api/endpoints/admin/emoji/update.ts @@ -1,8 +1,8 @@ import $ from 'cafy'; -import Emoji from '../../../../../models/emoji'; import define from '../../../define'; -import ID from '../../../../../misc/cafy-id'; import { detectUrlMine } from '../../../../../misc/detect-url-mine'; +import { ID } from '../../../../../misc/cafy-id'; +import { Emojis } from '../../../../../models'; export const meta = { desc: { @@ -34,23 +34,17 @@ export const meta = { }; export default define(meta, async (ps) => { - const emoji = await Emoji.findOne({ - _id: ps.id - }); + const emoji = await Emojis.findOne(ps.id); if (emoji == null) throw new Error('emoji not found'); const type = await detectUrlMine(ps.url); - await Emoji.update({ _id: emoji._id }, { - $set: { - updatedAt: new Date(), - name: ps.name, - aliases: ps.aliases, - url: ps.url, - type, - } + await Emojis.update(emoji.id, { + updatedAt: new Date(), + name: ps.name, + aliases: ps.aliases, + url: ps.url, + type, }); - - return; }); diff --git a/src/server/api/endpoints/admin/federation/remove-all-following.ts b/src/server/api/endpoints/admin/federation/remove-all-following.ts index 98afdfc2a5..fca76e7086 100644 --- a/src/server/api/endpoints/admin/federation/remove-all-following.ts +++ b/src/server/api/endpoints/admin/federation/remove-all-following.ts @@ -1,8 +1,7 @@ import $ from 'cafy'; import define from '../../../define'; -import Following from '../../../../../models/following'; -import User from '../../../../../models/user'; import deleteFollowing from '../../../../../services/following/delete'; +import { Followings, Users } from '../../../../../models'; export const meta = { tags: ['admin'], @@ -18,13 +17,13 @@ export const meta = { }; export default define(meta, async (ps, me) => { - const followings = await Following.find({ - '_follower.host': ps.host + const followings = await Followings.find({ + followerHost: ps.host }); const pairs = await Promise.all(followings.map(f => Promise.all([ - User.findOne({ _id: f.followerId }), - User.findOne({ _id: f.followeeId }) + Users.findOne(f.followerId), + Users.findOne(f.followeeId) ]))); for (const pair of pairs) { diff --git a/src/server/api/endpoints/admin/federation/update-instance.ts b/src/server/api/endpoints/admin/federation/update-instance.ts index 0d127b53b3..d1abe95a5b 100644 --- a/src/server/api/endpoints/admin/federation/update-instance.ts +++ b/src/server/api/endpoints/admin/federation/update-instance.ts @@ -1,6 +1,6 @@ import $ from 'cafy'; import define from '../../../define'; -import Instance from '../../../../../models/instance'; +import { Instances } from '../../../../../models'; export const meta = { tags: ['admin'], @@ -13,10 +13,6 @@ export const meta = { validator: $.str }, - isBlocked: { - validator: $.bool - }, - isClosed: { validator: $.bool }, @@ -24,18 +20,13 @@ export const meta = { }; export default define(meta, async (ps, me) => { - const instance = await Instance.findOne({ host: ps.host }); + const instance = await Instances.findOne({ host: ps.host }); if (instance == null) { throw new Error('instance not found'); } - Instance.update({ host: ps.host }, { - $set: { - isBlocked: ps.isBlocked, - isMarkedAsClosed: ps.isClosed - } + Instances.update({ host: ps.host }, { + isMarkedAsClosed: ps.isClosed }); - - return; }); diff --git a/src/server/api/endpoints/admin/invite.ts b/src/server/api/endpoints/admin/invite.ts index 28aa301957..4e264feef6 100644 --- a/src/server/api/endpoints/admin/invite.ts +++ b/src/server/api/endpoints/admin/invite.ts @@ -1,6 +1,7 @@ import rndstr from 'rndstr'; -import RegistrationTicket from '../../../../models/registration-tickets'; import define from '../../define'; +import { RegistrationTickets } from '../../../../models'; +import { genId } from '../../../../misc/gen-id'; export const meta = { desc: { @@ -18,7 +19,8 @@ export const meta = { export default define(meta, async (ps) => { const code = rndstr({ length: 5, chars: '0-9' }); - await RegistrationTicket.insert({ + await RegistrationTickets.save({ + id: genId(), createdAt: new Date(), code: code }); diff --git a/src/server/api/endpoints/admin/logs.ts b/src/server/api/endpoints/admin/logs.ts index 805a42b9e0..eee56a3939 100644 --- a/src/server/api/endpoints/admin/logs.ts +++ b/src/server/api/endpoints/admin/logs.ts @@ -1,6 +1,7 @@ import $ from 'cafy'; import define from '../../define'; -import Log from '../../../../models/log'; +import { Logs } from '../../../../models'; +import { Brackets } from 'typeorm'; export const meta = { tags: ['admin'], @@ -27,41 +28,44 @@ export const meta = { }; export default define(meta, async (ps) => { - const sort = { - _id: -1 - }; - const query = {} as any; + const query = Logs.createQueryBuilder('log'); + + if (ps.level) query.andWhere('log.level = :level', { level: ps.level }); - if (ps.level) query.level = ps.level; if (ps.domain) { - for (const d of ps.domain.split(' ')) { - const qs: any[] = []; - let i = 0; - for (const sd of (d.startsWith('-') ? d.substr(1) : d).split('.')) { - qs.push({ - [`domain.${i}`]: d.startsWith('-') ? { $ne: sd } : sd - }); - i++; - } - if (d.startsWith('-')) { - if (query['$and'] == null) query['$and'] = []; - query['$and'].push({ - $and: qs - }); - } else { - if (query['$or'] == null) query['$or'] = []; - query['$or'].push({ - $and: qs - }); - } + const whiteDomains = ps.domain.split(' ').filter(x => !x.startsWith('-')); + const blackDomains = ps.domain.split(' ').filter(x => x.startsWith('-')); + + if (whiteDomains.length > 0) { + query.andWhere(new Brackets(qb => { + for (const whiteDomain of whiteDomains) { + let i = 0; + for (const subDomain of whiteDomain.split('.')) { + const p = `whiteSubDomain_${subDomain}_${i}`; + // SQL is 1 based, so we need '+ 1' + qb.orWhere(`log.domain[${i + 1}] = :${p}`, { [p]: subDomain }); + i++; + } + } + })); + } + + if (blackDomains.length > 0) { + query.andWhere(new Brackets(qb => { + for (const blackDomain of blackDomains) { + let i = 0; + for (const subDomain of blackDomain.split('.')) { + const p = `blackSubDomain_${subDomain}_${i}`; + // SQL is 1 based, so we need '+ 1' + qb.andWhere(`log.domain[${i + 1}] != :${p}`, { [p]: subDomain }); + i++; + } + } + })); } } - const logs = await Log - .find(query, { - limit: ps.limit, - sort: sort - }); + const logs = await query.take(ps.limit).getMany(); return logs; }); diff --git a/src/server/api/endpoints/admin/moderators/add.ts b/src/server/api/endpoints/admin/moderators/add.ts index 2271bcd1a9..a15f0a17a2 100644 --- a/src/server/api/endpoints/admin/moderators/add.ts +++ b/src/server/api/endpoints/admin/moderators/add.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../../misc/cafy-id'; +import { ID } from '../../../../../misc/cafy-id'; import define from '../../../define'; -import User from '../../../../../models/user'; +import { Users } from '../../../../../models'; export const meta = { desc: { @@ -17,7 +17,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID' @@ -27,21 +26,13 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); } - await User.update({ - _id: user._id - }, { - $set: { - isModerator: true - } + await Users.update(user.id, { + isModerator: true }); - - return; }); diff --git a/src/server/api/endpoints/admin/moderators/remove.ts b/src/server/api/endpoints/admin/moderators/remove.ts index 84143d3e35..209cf0814f 100644 --- a/src/server/api/endpoints/admin/moderators/remove.ts +++ b/src/server/api/endpoints/admin/moderators/remove.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../../misc/cafy-id'; +import { ID } from '../../../../../misc/cafy-id'; import define from '../../../define'; -import User from '../../../../../models/user'; +import { Users } from '../../../../../models'; export const meta = { desc: { @@ -17,7 +17,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID' @@ -27,21 +26,13 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); } - await User.update({ - _id: user._id - }, { - $set: { - isModerator: false - } + await Users.update(user.id, { + isModerator: false }); - - return; }); diff --git a/src/server/api/endpoints/admin/remove-abuse-user-report.ts b/src/server/api/endpoints/admin/remove-abuse-user-report.ts index fa17e2c937..f293c00718 100644 --- a/src/server/api/endpoints/admin/remove-abuse-user-report.ts +++ b/src/server/api/endpoints/admin/remove-abuse-user-report.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import AbuseUserReport from '../../../../models/abuse-user-report'; +import { AbuseUserReports } from '../../../../models'; export const meta = { tags: ['admin'], @@ -12,23 +12,16 @@ export const meta = { params: { reportId: { validator: $.type(ID), - transform: transform }, } }; export default define(meta, async (ps) => { - const report = await AbuseUserReport.findOne({ - _id: ps.reportId - }); + const report = await AbuseUserReports.findOne(ps.reportId); if (report == null) { throw new Error('report not found'); } - await AbuseUserReport.remove({ - _id: report._id - }); - - return; + await AbuseUserReports.delete(report.id); }); diff --git a/src/server/api/endpoints/admin/reset-password.ts b/src/server/api/endpoints/admin/reset-password.ts index 73901d8358..07b8b6d938 100644 --- a/src/server/api/endpoints/admin/reset-password.ts +++ b/src/server/api/endpoints/admin/reset-password.ts @@ -1,9 +1,9 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import User from '../../../../models/user'; import * as bcrypt from 'bcryptjs'; import rndstr from 'rndstr'; +import { Users } from '../../../../models'; export const meta = { desc: { @@ -18,7 +18,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to suspend' @@ -28,9 +27,7 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); @@ -45,12 +42,8 @@ export default define(meta, async (ps) => { // Generate hash of password const hash = bcrypt.hashSync(passwd); - await User.findOneAndUpdate({ - _id: user._id - }, { - $set: { - password: hash - } + await Users.update(user.id, { + password: hash }); return { diff --git a/src/server/api/endpoints/admin/show-user.ts b/src/server/api/endpoints/admin/show-user.ts index 985f71a873..452125dea0 100644 --- a/src/server/api/endpoints/admin/show-user.ts +++ b/src/server/api/endpoints/admin/show-user.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import User from '../../../../models/user'; +import { Users } from '../../../../models'; export const meta = { desc: { @@ -16,7 +16,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to suspend' @@ -26,9 +25,7 @@ export const meta = { }; export default define(meta, async (ps, me) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts index 5feb1b4fd8..73976b9872 100644 --- a/src/server/api/endpoints/admin/show-users.ts +++ b/src/server/api/endpoints/admin/show-users.ts @@ -1,7 +1,6 @@ import $ from 'cafy'; -import User, { pack } from '../../../../models/user'; import define from '../../define'; -import { fallback } from '../../../../prelude/symbol'; +import { Users } from '../../../../models'; export const meta = { tags: ['admin'], @@ -55,51 +54,38 @@ export const meta = { } }; -const sort: any = { // < https://github.com/Microsoft/TypeScript/issues/1863 - '+follower': { followersCount: -1 }, - '-follower': { followersCount: 1 }, - '+createdAt': { createdAt: -1 }, - '-createdAt': { createdAt: 1 }, - '+updatedAt': { updatedAt: -1 }, - '-updatedAt': { updatedAt: 1 }, - [fallback]: { _id: -1 } -}; - export default define(meta, async (ps, me) => { - const q = { - $and: [] - } as any; + const query = Users.createQueryBuilder('user'); + + switch (ps.state) { + case 'admin': query.where('user.isAdmin = TRUE'); break; + case 'moderator': query.where('user.isModerator = TRUE'); break; + case 'adminOrModerator': query.where('user.isAdmin = TRUE OR isModerator = TRUE'); break; + case 'verified': query.where('user.isVerified = TRUE'); break; + case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break; + case 'silenced': query.where('user.isSilenced = TRUE'); break; + case 'suspended': query.where('user.isSuspended = TRUE'); break; + } - // state - q.$and.push( - ps.state == 'admin' ? { isAdmin: true } : - ps.state == 'moderator' ? { isModerator: true } : - ps.state == 'adminOrModerator' ? { - $or: [{ - isAdmin: true - }, { - isModerator: true - }] - } : - ps.state == 'verified' ? { isVerified: true } : - ps.state == 'silenced' ? { isSilenced: true } : - ps.state == 'suspended' ? { isSuspended: true } : - {} - ); + switch (ps.origin) { + case 'local': query.andWhere('user.host IS NULL'); break; + case 'remote': query.andWhere('user.host IS NOT NULL'); break; + } + + switch (ps.sort) { + case '+follower': query.orderBy('user.followersCount', 'DESC'); break; + case '-follower': query.orderBy('user.followersCount', 'ASC'); break; + case '+createdAt': query.orderBy('user.createdAt', 'DESC'); break; + case '-createdAt': query.orderBy('user.createdAt', 'ASC'); break; + case '+updatedAt': query.orderBy('user.updatedAt', 'DESC'); break; + case '-updatedAt': query.orderBy('user.updatedAt', 'ASC'); break; + default: query.orderBy('user.id', 'ASC'); break; + } - // origin - q.$and.push( - ps.origin == 'local' ? { host: null } : - ps.origin == 'remote' ? { host: { $ne: null } } : - {} - ); + query.take(ps.limit); + query.skip(ps.offset); - const users = await User - .find(q, { - limit: ps.limit, - sort: sort[ps.sort] || sort[fallback], - skip: ps.offset - }); + const users = await query.getMany(); - return await Promise.all(users.map(user => pack(user, me, { detail: true }))); + return await Users.packMany(users, me, { detail: true }); }); diff --git a/src/server/api/endpoints/admin/silence-user.ts b/src/server/api/endpoints/admin/silence-user.ts index 2557d8de6a..83aa88012a 100644 --- a/src/server/api/endpoints/admin/silence-user.ts +++ b/src/server/api/endpoints/admin/silence-user.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import User from '../../../../models/user'; +import { Users } from '../../../../models'; export const meta = { desc: { @@ -17,7 +17,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to make silence' @@ -27,9 +26,7 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); @@ -39,13 +36,7 @@ export default define(meta, async (ps) => { throw new Error('cannot silence admin'); } - await User.findOneAndUpdate({ - _id: user._id - }, { - $set: { - isSilenced: true - } + await Users.update(user.id, { + isSilenced: true }); - - return; }); diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts index 0a2d309530..fa4d378708 100644 --- a/src/server/api/endpoints/admin/suspend-user.ts +++ b/src/server/api/endpoints/admin/suspend-user.ts @@ -1,9 +1,9 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import User, { IUser } from '../../../../models/user'; -import Following from '../../../../models/following'; import deleteFollowing from '../../../../services/following/delete'; +import { Users, Followings } from '../../../../models'; +import { User } from '../../../../models/entities/user'; export const meta = { desc: { @@ -19,7 +19,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to suspend' @@ -29,9 +28,7 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); @@ -45,27 +42,21 @@ export default define(meta, async (ps) => { throw new Error('cannot suspend moderator'); } - await User.findOneAndUpdate({ - _id: user._id - }, { - $set: { - isSuspended: true - } + await Users.update(user.id, { + isSuspended: true }); unFollowAll(user); - - return; }); -async function unFollowAll(follower: IUser) { - const followings = await Following.find({ - followerId: follower._id +async function unFollowAll(follower: User) { + const followings = await Followings.find({ + followerId: follower.id }); for (const following of followings) { - const followee = await User.findOne({ - _id: following.followeeId + const followee = await Users.findOne({ + id: following.followeeId }); if (followee == null) { diff --git a/src/server/api/endpoints/admin/unsilence-user.ts b/src/server/api/endpoints/admin/unsilence-user.ts index 01bf41aaef..f9b173366b 100644 --- a/src/server/api/endpoints/admin/unsilence-user.ts +++ b/src/server/api/endpoints/admin/unsilence-user.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import User from '../../../../models/user'; +import { Users } from '../../../../models'; export const meta = { desc: { @@ -17,7 +17,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to unsilence' @@ -27,21 +26,13 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); } - await User.findOneAndUpdate({ - _id: user._id - }, { - $set: { - isSilenced: false - } + await Users.update(user.id, { + isSilenced: false }); - - return; }); diff --git a/src/server/api/endpoints/admin/unsuspend-user.ts b/src/server/api/endpoints/admin/unsuspend-user.ts index 5da35f28e6..08dae034d3 100644 --- a/src/server/api/endpoints/admin/unsuspend-user.ts +++ b/src/server/api/endpoints/admin/unsuspend-user.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import User from '../../../../models/user'; +import { Users } from '../../../../models'; export const meta = { desc: { @@ -17,7 +17,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to unsuspend' @@ -27,21 +26,13 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); } - await User.findOneAndUpdate({ - _id: user._id - }, { - $set: { - isSuspended: false - } + await Users.update(user.id, { + isSuspended: false }); - - return; }); diff --git a/src/server/api/endpoints/admin/unverify-user.ts b/src/server/api/endpoints/admin/unverify-user.ts index d3ca05cb39..b215dbf10d 100644 --- a/src/server/api/endpoints/admin/unverify-user.ts +++ b/src/server/api/endpoints/admin/unverify-user.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import User from '../../../../models/user'; +import { Users } from '../../../../models'; export const meta = { desc: { @@ -17,7 +17,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to unverify' @@ -27,21 +26,13 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); } - await User.findOneAndUpdate({ - _id: user._id - }, { - $set: { - isVerified: false - } + await Users.update(user.id, { + isVerified: false }); - - return; }); diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index f8f7cb5d9a..e242ac71a1 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -1,6 +1,7 @@ import $ from 'cafy'; -import Meta from '../../../../models/meta'; import define from '../../define'; +import { Metas } from '../../../../models'; +import { Meta } from '../../../../models/entities/meta'; export const meta = { desc: { @@ -55,7 +56,7 @@ export const meta = { } }, - hidedTags: { + hiddenTags: { validator: $.optional.nullable.arr($.str), desc: { 'ja-JP': '統計などで無視するハッシュタグ' @@ -253,27 +254,6 @@ export const meta = { } }, - enableExternalUserRecommendation: { - validator: $.optional.bool, - desc: { - 'ja-JP': '外部ユーザーレコメンデーションを有効にする' - } - }, - - externalUserRecommendationEngine: { - validator: $.optional.nullable.str, - desc: { - 'ja-JP': '外部ユーザーレコメンデーションのサードパーティエンジン' - } - }, - - externalUserRecommendationTimeout: { - validator: $.optional.nullable.num.min(0), - desc: { - 'ja-JP': '外部ユーザーレコメンデーションのタイムアウト (ミリ秒)' - } - }, - enableEmail: { validator: $.optional.bool, desc: { @@ -347,7 +327,7 @@ export const meta = { }; export default define(meta, async (ps) => { - const set = {} as any; + const set = {} as Partial<Meta>; if (ps.announcements) { set.announcements = ps.announcements; @@ -373,8 +353,8 @@ export default define(meta, async (ps) => { set.useStarForReactionFallback = ps.useStarForReactionFallback; } - if (Array.isArray(ps.hidedTags)) { - set.hidedTags = ps.hidedTags; + if (Array.isArray(ps.hiddenTags)) { + set.hiddenTags = ps.hiddenTags; } if (ps.mascotImageUrl !== undefined) { @@ -430,11 +410,11 @@ export default define(meta, async (ps) => { } if (ps.maintainerName !== undefined) { - set['maintainer.name'] = ps.maintainerName; + set.maintainerName = ps.maintainerName; } if (ps.maintainerEmail !== undefined) { - set['maintainer.email'] = ps.maintainerEmail; + set.maintainerEmail = ps.maintainerEmail; } if (ps.langs !== undefined) { @@ -481,18 +461,6 @@ export default define(meta, async (ps) => { set.discordClientSecret = ps.discordClientSecret; } - if (ps.enableExternalUserRecommendation !== undefined) { - set.enableExternalUserRecommendation = ps.enableExternalUserRecommendation; - } - - if (ps.externalUserRecommendationEngine !== undefined) { - set.externalUserRecommendationEngine = ps.externalUserRecommendationEngine; - } - - if (ps.externalUserRecommendationTimeout !== undefined) { - set.externalUserRecommendationTimeout = ps.externalUserRecommendationTimeout; - } - if (ps.enableEmail !== undefined) { set.enableEmail = ps.enableEmail; } @@ -537,9 +505,11 @@ export default define(meta, async (ps) => { set.swPrivateKey = ps.swPrivateKey; } - await Meta.update({}, { - $set: set - }, { upsert: true }); + const meta = await Metas.findOne(); - return; + if (meta) { + await Metas.update(meta.id, set); + } else { + await Metas.save(set); + } }); diff --git a/src/server/api/endpoints/admin/update-remote-user.ts b/src/server/api/endpoints/admin/update-remote-user.ts index a74685912c..0be9047d5a 100644 --- a/src/server/api/endpoints/admin/update-remote-user.ts +++ b/src/server/api/endpoints/admin/update-remote-user.ts @@ -1,6 +1,5 @@ -import * as mongo from 'mongodb'; import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; import { getRemoteUser } from '../../common/getters'; import { updatePerson } from '../../../../remote/activitypub/models/person'; @@ -19,7 +18,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to update' @@ -29,11 +27,6 @@ export const meta = { }; export default define(meta, async (ps) => { - await updatePersonById(ps.userId); - return; -}); - -async function updatePersonById(userId: mongo.ObjectID) { - const user = await getRemoteUser(userId); + const user = await getRemoteUser(ps.userId); await updatePerson(user.uri); -} +}); diff --git a/src/server/api/endpoints/admin/verify-user.ts b/src/server/api/endpoints/admin/verify-user.ts index f67b6c3bf0..c1b447a92b 100644 --- a/src/server/api/endpoints/admin/verify-user.ts +++ b/src/server/api/endpoints/admin/verify-user.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; -import ID, { transform } from '../../../../misc/cafy-id'; +import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; -import User from '../../../../models/user'; +import { Users } from '../../../../models'; export const meta = { desc: { @@ -17,7 +17,6 @@ export const meta = { params: { userId: { validator: $.type(ID), - transform: transform, desc: { 'ja-JP': '対象のユーザーID', 'en-US': 'The user ID which you want to verify' @@ -27,21 +26,13 @@ export const meta = { }; export default define(meta, async (ps) => { - const user = await User.findOne({ - _id: ps.userId - }); + const user = await Users.findOne(ps.userId as string); if (user == null) { throw new Error('user not found'); } - await User.findOneAndUpdate({ - _id: user._id - }, { - $set: { - isVerified: true - } + await Users.update(user.id, { + isVerified: true }); - - return; }); |