summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2021-02-13 15:33:38 +0900
committersyuilo <syuilotan@yahoo.co.jp>2021-02-13 15:33:38 +0900
commit91172654e4b715198099146d4c442e0787df0785 (patch)
treed6cc5de1c3be9e143c76c05fffe7d2f07fc376c8
parentwip: email notification (diff)
downloadmisskey-91172654e4b715198099146d4c442e0787df0785.tar.gz
misskey-91172654e4b715198099146d4c442e0787df0785.tar.bz2
misskey-91172654e4b715198099146d4c442e0787df0785.zip
refactor: resolve #7139
-rw-r--r--CONTRIBUTING.md30
-rw-r--r--src/misc/check-hit-antenna.ts3
-rw-r--r--src/misc/fetch-proxy-account.ts3
-rw-r--r--src/models/repositories/abuse-user-report.ts3
-rw-r--r--src/models/repositories/antenna.ts3
-rw-r--r--src/models/repositories/app.ts3
-rw-r--r--src/models/repositories/auth-session.ts3
-rw-r--r--src/models/repositories/blocking.ts3
-rw-r--r--src/models/repositories/channel.ts3
-rw-r--r--src/models/repositories/clip.ts3
-rw-r--r--src/models/repositories/drive-file.ts3
-rw-r--r--src/models/repositories/drive-folder.ts3
-rw-r--r--src/models/repositories/emoji.ts3
-rw-r--r--src/models/repositories/follow-request.ts3
-rw-r--r--src/models/repositories/following.ts3
-rw-r--r--src/models/repositories/games/reversi/game.ts3
-rw-r--r--src/models/repositories/games/reversi/matching.ts3
-rw-r--r--src/models/repositories/messaging-message.ts3
-rw-r--r--src/models/repositories/moderation-logs.ts3
-rw-r--r--src/models/repositories/muting.ts3
-rw-r--r--src/models/repositories/note-favorite.ts3
-rw-r--r--src/models/repositories/note-reaction.ts3
-rw-r--r--src/models/repositories/note.ts5
-rw-r--r--src/models/repositories/notification.ts5
-rw-r--r--src/models/repositories/page-like.ts3
-rw-r--r--src/models/repositories/page.ts3
-rw-r--r--src/models/repositories/user-group-invitation.ts3
-rw-r--r--src/models/repositories/user-group.ts3
-rw-r--r--src/models/repositories/user-list.ts3
-rw-r--r--src/models/repositories/user.ts5
-rw-r--r--src/prelude/ensure.ts10
-rw-r--r--src/queue/processors/db/export-notes.ts3
-rw-r--r--src/remote/activitypub/db-resolver.ts3
-rw-r--r--src/remote/activitypub/models/image.ts3
-rw-r--r--src/remote/activitypub/models/note.ts3
-rw-r--r--src/remote/activitypub/models/person.ts3
-rw-r--r--src/remote/activitypub/renderer/follow-user.ts3
-rw-r--r--src/remote/activitypub/renderer/index.ts5
-rw-r--r--src/remote/activitypub/renderer/note.ts3
-rw-r--r--src/remote/activitypub/renderer/person.ts5
-rw-r--r--src/remote/activitypub/request.ts9
-rw-r--r--src/server/activitypub.ts3
-rw-r--r--src/server/activitypub/featured.ts3
-rw-r--r--src/server/activitypub/outbox.ts3
-rw-r--r--src/server/api/authenticate.ts3
-rw-r--r--src/server/api/common/inject-featured.ts3
-rw-r--r--src/server/api/common/inject-promo.ts5
-rw-r--r--src/server/api/endpoints/admin/federation/remove-all-following.ts5
-rw-r--r--src/server/api/endpoints/auth/accept.ts3
-rw-r--r--src/server/api/endpoints/auth/session/userkey.ts5
-rw-r--r--src/server/api/endpoints/i.ts3
-rw-r--r--src/server/api/endpoints/i/2fa/done.ts3
-rw-r--r--src/server/api/endpoints/i/2fa/key-done.ts3
-rw-r--r--src/server/api/endpoints/i/2fa/register-key.ts3
-rw-r--r--src/server/api/endpoints/i/2fa/register.ts3
-rw-r--r--src/server/api/endpoints/i/2fa/remove-key.ts3
-rw-r--r--src/server/api/endpoints/i/2fa/unregister.ts3
-rw-r--r--src/server/api/endpoints/i/change-password.ts3
-rw-r--r--src/server/api/endpoints/i/delete-account.ts3
-rw-r--r--src/server/api/endpoints/i/regenerate-token.ts3
-rw-r--r--src/server/api/endpoints/i/update-email.ts3
-rw-r--r--src/server/api/endpoints/i/update.ts3
-rw-r--r--src/server/api/endpoints/notes/delete.ts3
-rw-r--r--src/server/api/endpoints/notes/polls/vote.ts5
-rw-r--r--src/server/api/endpoints/room/show.ts3
-rw-r--r--src/server/api/private/signin.ts3
-rw-r--r--src/server/api/service/discord.ts13
-rw-r--r--src/server/api/service/github.ts13
-rw-r--r--src/server/api/service/twitter.ts13
-rw-r--r--src/server/web/feed.ts3
-rw-r--r--src/server/web/index.ts9
-rw-r--r--src/services/add-note-to-antenna.ts5
-rw-r--r--src/services/following/create.ts3
-rw-r--r--src/services/following/requests/accept-all.ts3
-rw-r--r--src/services/messages/delete.ts5
-rw-r--r--src/services/note/create.ts5
76 files changed, 107 insertions, 221 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2ffe6dc2e1..d9d6702e80 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -240,36 +240,6 @@ SQLでは配列のインデックスは**1始まり**。
MongoDBの時とは違い、findOneでレコードを取得する時に対象レコードが存在しない場合 **`undefined`** が返ってくるので注意。
MongoDBは`null`で返してきてたので、その感覚で`if (x === null)`とか書くとバグる。代わりに`if (x == null)`と書いてください
-### 簡素な`undefined`チェック
-データベースからレコードを取得するときに、プログラムの流れ的に(ほぼ)絶対`undefined`にはならない場合でも、`undefined`チェックしないとTypeScriptに怒られます。
-でもいちいち複数行を費やして、発生するはずのない`undefined`をチェックするのも面倒なので、`ensure`というユーティリティ関数を用意しています。
-例えば、
-``` ts
-const user = await Users.findOne(userId);
-// この時点で user の型は User | undefined
-if (user == null) {
- throw 'missing user';
-}
-// この時点で user の型は User
-```
-という処理を`ensure`を使うと
-``` ts
-const user = await Users.findOne(userId).then(ensure);
-// この時点で user の型は User
-```
-という風に書けます。
-もちろん`ensure`内部でエラーを握りつぶすようなことはしておらず、万が一`undefined`だった場合はPromiseがRejectされ後続の処理は実行されません。
-``` ts
-const user = await Users.findOne(userId).then(ensure);
-// 万が一 Users.findOne の結果が undefined だったら、ensure でエラーが発生するので
-// この行に到達することは無い
-// なので、.then(ensure) は
-// if (user == null) {
-// throw 'missing user';
-// }
-// の糖衣構文のような扱いです
-```
-
### Migration作成方法
```
npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前
diff --git a/src/misc/check-hit-antenna.ts b/src/misc/check-hit-antenna.ts
index 562d054563..0464f14131 100644
--- a/src/misc/check-hit-antenna.ts
+++ b/src/misc/check-hit-antenna.ts
@@ -4,7 +4,6 @@ import { User } from '../models/entities/user';
import { UserListJoinings, UserGroupJoinings } from '../models';
import parseAcct from './acct/parse';
import { getFullApAccount } from './convert-host';
-import { ensure } from '../prelude/ensure';
export async function checkHitAntenna(antenna: Antenna, note: Note, noteUser: User, followers: User['id'][]): Promise<boolean> {
if (note.visibility === 'specified') return false;
@@ -24,7 +23,7 @@ export async function checkHitAntenna(antenna: Antenna, note: Note, noteUser: Us
if (!listUsers.includes(note.userId)) return false;
} else if (antenna.src === 'group') {
- const joining = await UserGroupJoinings.findOne(antenna.userGroupJoiningId!).then(ensure);
+ const joining = await UserGroupJoinings.findOneOrFail(antenna.userGroupJoiningId!);
const groupUsers = (await UserGroupJoinings.find({
userGroupId: joining.userGroupId
diff --git a/src/misc/fetch-proxy-account.ts b/src/misc/fetch-proxy-account.ts
index 0094ab8a56..537edf2891 100644
--- a/src/misc/fetch-proxy-account.ts
+++ b/src/misc/fetch-proxy-account.ts
@@ -1,10 +1,9 @@
import { fetchMeta } from './fetch-meta';
import { ILocalUser } from '../models/entities/user';
import { Users } from '../models';
-import { ensure } from '../prelude/ensure';
export async function fetchProxyAccount(): Promise<ILocalUser | null> {
const meta = await fetchMeta();
if (meta.proxyAccountId == null) return null;
- return await Users.findOne(meta.proxyAccountId).then(ensure) as ILocalUser;
+ return await Users.findOneOrFail(meta.proxyAccountId) as ILocalUser;
}
diff --git a/src/models/repositories/abuse-user-report.ts b/src/models/repositories/abuse-user-report.ts
index dbdaa5ee15..cb33d2506e 100644
--- a/src/models/repositories/abuse-user-report.ts
+++ b/src/models/repositories/abuse-user-report.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Users } from '..';
import { AbuseUserReport } from '../entities/abuse-user-report';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
@EntityRepository(AbuseUserReport)
@@ -9,7 +8,7 @@ export class AbuseUserReportRepository extends Repository<AbuseUserReport> {
public async pack(
src: AbuseUserReport['id'] | AbuseUserReport,
) {
- const report = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const report = typeof src === 'object' ? src : await this.findOneOrFail(src);
return await awaitAll({
id: report.id,
diff --git a/src/models/repositories/antenna.ts b/src/models/repositories/antenna.ts
index 16ef2e5a39..b20da26c5d 100644
--- a/src/models/repositories/antenna.ts
+++ b/src/models/repositories/antenna.ts
@@ -1,6 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
import { Antenna } from '../entities/antenna';
-import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
import { AntennaNotes, UserGroupJoinings } from '..';
@@ -11,7 +10,7 @@ export class AntennaRepository extends Repository<Antenna> {
public async pack(
src: Antenna['id'] | Antenna,
): Promise<PackedAntenna> {
- const antenna = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const antenna = typeof src === 'object' ? src : await this.findOneOrFail(src);
const hasUnreadNote = (await AntennaNotes.findOne({ antennaId: antenna.id, read: false })) != null;
const userGroupJoining = antenna.userGroupJoiningId ? await UserGroupJoinings.findOne(antenna.userGroupJoiningId) : null;
diff --git a/src/models/repositories/app.ts b/src/models/repositories/app.ts
index 45d8d16c51..f5cc10787a 100644
--- a/src/models/repositories/app.ts
+++ b/src/models/repositories/app.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { App } from '../entities/app';
import { AccessTokens } from '..';
-import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
export type PackedApp = SchemaType<typeof packedAppSchema>;
@@ -23,7 +22,7 @@ export class AppRepository extends Repository<App> {
includeProfileImageIds: false
}, options);
- const app = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const app = typeof src === 'object' ? src : await this.findOneOrFail(src);
return {
id: app.id,
diff --git a/src/models/repositories/auth-session.ts b/src/models/repositories/auth-session.ts
index a6a4d46de6..e985d6925f 100644
--- a/src/models/repositories/auth-session.ts
+++ b/src/models/repositories/auth-session.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Apps } from '..';
import { AuthSession } from '../entities/auth-session';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
@EntityRepository(AuthSession)
@@ -10,7 +9,7 @@ export class AuthSessionRepository extends Repository<AuthSession> {
src: AuthSession['id'] | AuthSession,
me?: any
) {
- const session = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const session = typeof src === 'object' ? src : await this.findOneOrFail(src);
return await awaitAll({
id: session.id,
diff --git a/src/models/repositories/blocking.ts b/src/models/repositories/blocking.ts
index 9ebe6bbf59..314f459e65 100644
--- a/src/models/repositories/blocking.ts
+++ b/src/models/repositories/blocking.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Users } from '..';
import { Blocking } from '../entities/blocking';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
import { SchemaType } from '../../misc/schema';
@@ -13,7 +12,7 @@ export class BlockingRepository extends Repository<Blocking> {
src: Blocking['id'] | Blocking,
me?: any
): Promise<PackedBlocking> {
- const blocking = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const blocking = typeof src === 'object' ? src : await this.findOneOrFail(src);
return await awaitAll({
id: blocking.id,
diff --git a/src/models/repositories/channel.ts b/src/models/repositories/channel.ts
index 2a90419922..2654c9d6f3 100644
--- a/src/models/repositories/channel.ts
+++ b/src/models/repositories/channel.ts
@@ -1,6 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
import { Channel } from '../entities/channel';
-import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
import { DriveFiles, ChannelFollowings, NoteUnreads } from '..';
import { User } from '../entities/user';
@@ -13,7 +12,7 @@ export class ChannelRepository extends Repository<Channel> {
src: Channel['id'] | Channel,
me?: User['id'] | User | null | undefined,
): Promise<PackedChannel> {
- const channel = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const channel = typeof src === 'object' ? src : await this.findOneOrFail(src);
const meId = me ? typeof me === 'string' ? me : me.id : null;
const banner = channel.bannerId ? await DriveFiles.findOne(channel.bannerId) : null;
diff --git a/src/models/repositories/clip.ts b/src/models/repositories/clip.ts
index 11f743349f..84891a4372 100644
--- a/src/models/repositories/clip.ts
+++ b/src/models/repositories/clip.ts
@@ -1,6 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
import { Clip } from '../entities/clip';
-import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
import { Users } from '..';
import { awaitAll } from '../../prelude/await-all';
@@ -12,7 +11,7 @@ export class ClipRepository extends Repository<Clip> {
public async pack(
src: Clip['id'] | Clip,
): Promise<PackedClip> {
- const clip = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const clip = typeof src === 'object' ? src : await this.findOneOrFail(src);
return await awaitAll({
id: clip.id,
diff --git a/src/models/repositories/drive-file.ts b/src/models/repositories/drive-file.ts
index ab22d2dc09..3d013b8bb2 100644
--- a/src/models/repositories/drive-file.ts
+++ b/src/models/repositories/drive-file.ts
@@ -3,7 +3,6 @@ import { DriveFile } from '../entities/drive-file';
import { Users, DriveFolders } from '..';
import { User } from '../entities/user';
import { toPuny } from '../../misc/convert-host';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
import { SchemaType } from '../../misc/schema';
import config from '../../config';
@@ -103,7 +102,7 @@ export class DriveFileRepository extends Repository<DriveFile> {
self: false
}, options);
- const file = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const file = typeof src === 'object' ? src : await this.findOneOrFail(src);
const meta = await fetchMeta();
diff --git a/src/models/repositories/drive-folder.ts b/src/models/repositories/drive-folder.ts
index dee424cccb..2a18220384 100644
--- a/src/models/repositories/drive-folder.ts
+++ b/src/models/repositories/drive-folder.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { DriveFolders, DriveFiles } from '..';
import { DriveFolder } from '../entities/drive-folder';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
import { SchemaType } from '../../misc/schema';
@@ -26,7 +25,7 @@ export class DriveFolderRepository extends Repository<DriveFolder> {
detail: false
}, options);
- const folder = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const folder = typeof src === 'object' ? src : await this.findOneOrFail(src);
return await awaitAll({
id: folder.id,
diff --git a/src/models/repositories/emoji.ts b/src/models/repositories/emoji.ts
index b485b37da5..3490a6ac86 100644
--- a/src/models/repositories/emoji.ts
+++ b/src/models/repositories/emoji.ts
@@ -1,13 +1,12 @@
import { EntityRepository, Repository } from 'typeorm';
import { Emoji } from '../entities/emoji';
-import { ensure } from '../../prelude/ensure';
@EntityRepository(Emoji)
export class EmojiRepository extends Repository<Emoji> {
public async pack(
src: Emoji['id'] | Emoji,
) {
- const emoji = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const emoji = typeof src === 'object' ? src : await this.findOneOrFail(src);
return {
id: emoji.id,
diff --git a/src/models/repositories/follow-request.ts b/src/models/repositories/follow-request.ts
index 451ed8e2d5..0d96b8eb53 100644
--- a/src/models/repositories/follow-request.ts
+++ b/src/models/repositories/follow-request.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { FollowRequest } from '../entities/follow-request';
import { Users } from '..';
-import { ensure } from '../../prelude/ensure';
@EntityRepository(FollowRequest)
export class FollowRequestRepository extends Repository<FollowRequest> {
@@ -9,7 +8,7 @@ export class FollowRequestRepository extends Repository<FollowRequest> {
src: FollowRequest['id'] | FollowRequest,
me?: any
) {
- const request = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const request = typeof src === 'object' ? src : await this.findOneOrFail(src);
return {
id: request.id,
diff --git a/src/models/repositories/following.ts b/src/models/repositories/following.ts
index 58728a3380..986f107e7d 100644
--- a/src/models/repositories/following.ts
+++ b/src/models/repositories/following.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Users } from '..';
import { Following } from '../entities/following';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
import { SchemaType } from '../../misc/schema';
@@ -57,7 +56,7 @@ export class FollowingRepository extends Repository<Following> {
populateFollower?: boolean;
}
): Promise<PackedFollowing> {
- const following = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const following = typeof src === 'object' ? src : await this.findOneOrFail(src);
if (opts == null) opts = {};
diff --git a/src/models/repositories/games/reversi/game.ts b/src/models/repositories/games/reversi/game.ts
index c380f5251e..e23247f664 100644
--- a/src/models/repositories/games/reversi/game.ts
+++ b/src/models/repositories/games/reversi/game.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Users } from '../../..';
import { ReversiGame } from '../../../entities/games/reversi/game';
-import { ensure } from '../../../../prelude/ensure';
@EntityRepository(ReversiGame)
export class ReversiGameRepository extends Repository<ReversiGame> {
@@ -16,7 +15,7 @@ export class ReversiGameRepository extends Repository<ReversiGame> {
detail: true
}, options);
- const game = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const game = typeof src === 'object' ? src : await this.findOneOrFail(src);
const meId = me ? typeof me === 'string' ? me : me.id : null;
return {
diff --git a/src/models/repositories/games/reversi/matching.ts b/src/models/repositories/games/reversi/matching.ts
index 86c9204456..51f17c9a4e 100644
--- a/src/models/repositories/games/reversi/matching.ts
+++ b/src/models/repositories/games/reversi/matching.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { ReversiMatching } from '../../../entities/games/reversi/matching';
import { Users } from '../../..';
-import { ensure } from '../../../../prelude/ensure';
import { awaitAll } from '../../../../prelude/await-all';
@EntityRepository(ReversiMatching)
@@ -10,7 +9,7 @@ export class ReversiMatchingRepository extends Repository<ReversiMatching> {
src: ReversiMatching['id'] | ReversiMatching,
me: any
) {
- const matching = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const matching = typeof src === 'object' ? src : await this.findOneOrFail(src);
return await awaitAll({
id: matching.id,
diff --git a/src/models/repositories/messaging-message.ts b/src/models/repositories/messaging-message.ts
index d70e95bc12..0e04c25864 100644
--- a/src/models/repositories/messaging-message.ts
+++ b/src/models/repositories/messaging-message.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { MessagingMessage } from '../entities/messaging-message';
import { Users, DriveFiles, UserGroups } from '..';
-import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
export type PackedMessagingMessage = SchemaType<typeof packedMessagingMessageSchema>;
@@ -25,7 +24,7 @@ export class MessagingMessageRepository extends Repository<MessagingMessage> {
populateGroup: true,
};
- const message = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const message = typeof src === 'object' ? src : await this.findOneOrFail(src);
return {
id: message.id,
diff --git a/src/models/repositories/moderation-logs.ts b/src/models/repositories/moderation-logs.ts
index d6e04795bb..3d4c075701 100644
--- a/src/models/repositories/moderation-logs.ts
+++ b/src/models/repositories/moderation-logs.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Users } from '..';
import { ModerationLog } from '../entities/moderation-log';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
@EntityRepository(ModerationLog)
@@ -9,7 +8,7 @@ export class ModerationLogRepository extends Repository<ModerationLog> {
public async pack(
src: ModerationLog['id'] | ModerationLog,
) {
- const log = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const log = typeof src === 'object' ? src : await this.findOneOrFail(src);
return await awaitAll({
id: log.id,
diff --git a/src/models/repositories/muting.ts b/src/models/repositories/muting.ts
index 763e04bb3d..5fd409df78 100644
--- a/src/models/repositories/muting.ts
+++ b/src/models/repositories/muting.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Users } from '..';
import { Muting } from '../entities/muting';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
import { SchemaType } from '../../misc/schema';
@@ -13,7 +12,7 @@ export class MutingRepository extends Repository<Muting> {
src: Muting['id'] | Muting,
me?: any
): Promise<PackedMuting> {
- const muting = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const muting = typeof src === 'object' ? src : await this.findOneOrFail(src);
return await awaitAll({
id: muting.id,
diff --git a/src/models/repositories/note-favorite.ts b/src/models/repositories/note-favorite.ts
index 37cfbc0025..eb2ffff4c1 100644
--- a/src/models/repositories/note-favorite.ts
+++ b/src/models/repositories/note-favorite.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { NoteFavorite } from '../entities/note-favorite';
import { Notes } from '..';
-import { ensure } from '../../prelude/ensure';
@EntityRepository(NoteFavorite)
export class NoteFavoriteRepository extends Repository<NoteFavorite> {
@@ -9,7 +8,7 @@ export class NoteFavoriteRepository extends Repository<NoteFavorite> {
src: NoteFavorite['id'] | NoteFavorite,
me?: any
) {
- const favorite = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const favorite = typeof src === 'object' ? src : await this.findOneOrFail(src);
return {
id: favorite.id,
diff --git a/src/models/repositories/note-reaction.ts b/src/models/repositories/note-reaction.ts
index 3439f3c8cb..785a876bf8 100644
--- a/src/models/repositories/note-reaction.ts
+++ b/src/models/repositories/note-reaction.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { NoteReaction } from '../entities/note-reaction';
import { Users } from '..';
-import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
import { convertLegacyReaction } from '../../misc/reaction-lib';
@@ -13,7 +12,7 @@ export class NoteReactionRepository extends Repository<NoteReaction> {
src: NoteReaction['id'] | NoteReaction,
me?: any
): Promise<PackedNoteReaction> {
- const reaction = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const reaction = typeof src === 'object' ? src : await this.findOneOrFail(src);
return {
id: reaction.id,
diff --git a/src/models/repositories/note.ts b/src/models/repositories/note.ts
index b60744bb2b..87ca5eb9ec 100644
--- a/src/models/repositories/note.ts
+++ b/src/models/repositories/note.ts
@@ -2,7 +2,6 @@ import { EntityRepository, Repository, In } from 'typeorm';
import { Note } from '../entities/note';
import { User } from '../entities/user';
import { Emojis, Users, PollVotes, DriveFiles, NoteReactions, Followings, Polls, Channels } from '..';
-import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
import { awaitAll } from '../../prelude/await-all';
import { convertLegacyReaction, convertLegacyReactions, decodeReaction } from '../../misc/reaction-lib';
@@ -92,11 +91,11 @@ export class NoteRepository extends Repository<Note> {
}, options);
const meId = me ? typeof me === 'string' ? me : me.id : null;
- const note = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const note = typeof src === 'object' ? src : await this.findOneOrFail(src);
const host = note.userHost;
async function populatePoll() {
- const poll = await Polls.findOne(note.id).then(ensure);
+ const poll = await Polls.findOneOrFail(note.id);
const choices = poll.choices.map(c => ({
text: c,
votes: poll.votes[poll.choices.indexOf(c)],
diff --git a/src/models/repositories/notification.ts b/src/models/repositories/notification.ts
index 40f43d6c15..16de6c8c25 100644
--- a/src/models/repositories/notification.ts
+++ b/src/models/repositories/notification.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Users, Notes, UserGroupInvitations, AccessTokens } from '..';
import { Notification } from '../entities/notification';
-import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
import { SchemaType } from '../../misc/schema';
@@ -12,8 +11,8 @@ export class NotificationRepository extends Repository<Notification> {
public async pack(
src: Notification['id'] | Notification,
): Promise<PackedNotification> {
- const notification = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
- const token = notification.appAccessTokenId ? await AccessTokens.findOne(notification.appAccessTokenId).then(ensure) : null;
+ const notification = typeof src === 'object' ? src : await this.findOneOrFail(src);
+ const token = notification.appAccessTokenId ? await AccessTokens.findOneOrFail(notification.appAccessTokenId) : null;
return await awaitAll({
id: notification.id,
diff --git a/src/models/repositories/page-like.ts b/src/models/repositories/page-like.ts
index 3e7e803fdb..94b1685e5e 100644
--- a/src/models/repositories/page-like.ts
+++ b/src/models/repositories/page-like.ts
@@ -1,7 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { PageLike } from '../entities/page-like';
import { Pages } from '..';
-import { ensure } from '../../prelude/ensure';
@EntityRepository(PageLike)
export class PageLikeRepository extends Repository<PageLike> {
@@ -9,7 +8,7 @@ export class PageLikeRepository extends Repository<PageLike> {
src: PageLike['id'] | PageLike,
me?: any
) {
- const like = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const like = typeof src === 'object' ? src : await this.findOneOrFail(src);
return {
id: like.id,
diff --git a/src/models/repositories/page.ts b/src/models/repositories/page.ts
index 3889bf59a7..1b30b6645b 100644
--- a/src/models/repositories/page.ts
+++ b/src/models/repositories/page.ts
@@ -5,7 +5,6 @@ import { Users, DriveFiles, PageLikes } from '..';
import { awaitAll } from '../../prelude/await-all';
import { DriveFile } from '../entities/drive-file';
import { User } from '../entities/user';
-import { ensure } from '../../prelude/ensure';
export type PackedPage = SchemaType<typeof packedPageSchema>;
@@ -16,7 +15,7 @@ export class PageRepository extends Repository<Page> {
me?: User['id'] | User | null | undefined,
): Promise<PackedPage> {
const meId = me ? typeof me === 'string' ? me : me.id : null;
- const page = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const page = typeof src === 'object' ? src : await this.findOneOrFail(src);
const attachedFiles: Promise<DriveFile | undefined>[] = [];
const collectFile = (xs: any[]) => {
diff --git a/src/models/repositories/user-group-invitation.ts b/src/models/repositories/user-group-invitation.ts
index 0d3ad525c3..2aa890361c 100644
--- a/src/models/repositories/user-group-invitation.ts
+++ b/src/models/repositories/user-group-invitation.ts
@@ -1,14 +1,13 @@
import { EntityRepository, Repository } from 'typeorm';
import { UserGroupInvitation } from '../entities/user-group-invitation';
import { UserGroups } from '..';
-import { ensure } from '../../prelude/ensure';
@EntityRepository(UserGroupInvitation)
export class UserGroupInvitationRepository extends Repository<UserGroupInvitation> {
public async pack(
src: UserGroupInvitation['id'] | UserGroupInvitation,
) {
- const invitation = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const invitation = typeof src === 'object' ? src : await this.findOneOrFail(src);
return {
id: invitation.id,
diff --git a/src/models/repositories/user-group.ts b/src/models/repositories/user-group.ts
index 5ff75047c8..a1b226f154 100644
--- a/src/models/repositories/user-group.ts
+++ b/src/models/repositories/user-group.ts
@@ -1,6 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
import { UserGroup } from '../entities/user-group';
-import { ensure } from '../../prelude/ensure';
import { UserGroupJoinings } from '..';
import { SchemaType } from '../../misc/schema';
@@ -11,7 +10,7 @@ export class UserGroupRepository extends Repository<UserGroup> {
public async pack(
src: UserGroup['id'] | UserGroup,
): Promise<PackedUserGroup> {
- const userGroup = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const userGroup = typeof src === 'object' ? src : await this.findOneOrFail(src);
const users = await UserGroupJoinings.find({
userGroupId: userGroup.id
diff --git a/src/models/repositories/user-list.ts b/src/models/repositories/user-list.ts
index 8842118be4..9421aeb0c7 100644
--- a/src/models/repositories/user-list.ts
+++ b/src/models/repositories/user-list.ts
@@ -1,6 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
import { UserList } from '../entities/user-list';
-import { ensure } from '../../prelude/ensure';
import { UserListJoinings } from '..';
import { SchemaType } from '../../misc/schema';
@@ -11,7 +10,7 @@ export class UserListRepository extends Repository<UserList> {
public async pack(
src: UserList['id'] | UserList,
): Promise<PackedUserList> {
- const userList = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const userList = typeof src === 'object' ? src : await this.findOneOrFail(src);
const users = await UserListJoinings.find({
userListId: userList.id
diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts
index a3453b1aa6..7502e7a08e 100644
--- a/src/models/repositories/user.ts
+++ b/src/models/repositories/user.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import { EntityRepository, Repository, In, Not } from 'typeorm';
import { User, ILocalUser, IRemoteUser } from '../entities/user';
import { Emojis, Notes, NoteUnreads, FollowRequests, Notifications, MessagingMessages, UserNotePinings, Followings, Blockings, Mutings, UserProfiles, UserSecurityKeys, UserGroupJoinings, Pages, Announcements, AnnouncementReads, Antennas, AntennaNotes, ChannelFollowings, Instances } from '..';
-import { ensure } from '../../prelude/ensure';
import config from '../../config';
import { SchemaType } from '../../misc/schema';
import { awaitAll } from '../../prelude/await-all';
@@ -157,7 +156,7 @@ export class UserRepository extends Repository<User> {
includeSecrets: false
}, options);
- const user = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+ const user = typeof src === 'object' ? src : await this.findOneOrFail(src);
const meId = me ? typeof me === 'string' ? me : me.id : null;
const relation = meId && (meId !== user.id) && opts.detail ? await this.getRelation(meId, user.id) : null;
@@ -165,7 +164,7 @@ export class UserRepository extends Repository<User> {
where: { userId: user.id },
order: { id: 'DESC' }
}) : [];
- const profile = opts.detail ? await UserProfiles.findOne(user.id).then(ensure) : null;
+ const profile = opts.detail ? await UserProfiles.findOneOrFail(user.id) : null;
const falsy = opts.detail ? false : undefined;
diff --git a/src/prelude/ensure.ts b/src/prelude/ensure.ts
deleted file mode 100644
index 1af281c056..0000000000
--- a/src/prelude/ensure.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * 値が null または undefined の場合はエラーを発生させ、そうでない場合は値をそのまま返します
- */
-export function ensure<T>(x: T): NonNullable<T> {
- if (x == null) {
- throw new Error('ぬるぽ');
- } else {
- return x!;
- }
-}
diff --git a/src/queue/processors/db/export-notes.ts b/src/queue/processors/db/export-notes.ts
index 0fd8c02c4a..f76a47aacd 100644
--- a/src/queue/processors/db/export-notes.ts
+++ b/src/queue/processors/db/export-notes.ts
@@ -9,7 +9,6 @@ import { Users, Notes, Polls } from '../../../models';
import { MoreThan } from 'typeorm';
import { Note } from '../../../models/entities/note';
import { Poll } from '../../../models/entities/poll';
-import { ensure } from '../../../prelude/ensure';
const logger = queueLogger.createSubLogger('export-notes');
@@ -70,7 +69,7 @@ export async function exportNotes(job: Bull.Job, done: any): Promise<void> {
for (const note of notes) {
let poll: Poll | undefined;
if (note.hasPoll) {
- poll = await Polls.findOne({ noteId: note.id }).then(ensure);
+ poll = await Polls.findOneOrFail({ noteId: note.id });
}
const content = JSON.stringify(serialize(note, poll));
await new Promise((res, rej) => {
diff --git a/src/remote/activitypub/db-resolver.ts b/src/remote/activitypub/db-resolver.ts
index cad2212b70..26162b6b23 100644
--- a/src/remote/activitypub/db-resolver.ts
+++ b/src/remote/activitypub/db-resolver.ts
@@ -6,7 +6,6 @@ import { MessagingMessage } from '../../models/entities/messaging-message';
import { Notes, Users, UserPublickeys, MessagingMessages } from '../../models';
import { IObject, getApId } from './type';
import { resolvePerson } from './models/person';
-import { ensure } from '../../prelude/ensure';
import escapeRegexp = require('escape-regexp');
export default class DbResolver {
@@ -99,7 +98,7 @@ export default class DbResolver {
if (user == null) return null;
- const key = await UserPublickeys.findOne(user.id).then(ensure);
+ const key = await UserPublickeys.findOneOrFail(user.id);
return {
user,
diff --git a/src/remote/activitypub/models/image.ts b/src/remote/activitypub/models/image.ts
index 84a1040b2e..dd8086cbeb 100644
--- a/src/remote/activitypub/models/image.ts
+++ b/src/remote/activitypub/models/image.ts
@@ -5,7 +5,6 @@ import { fetchMeta } from '../../../misc/fetch-meta';
import { apLogger } from '../logger';
import { DriveFile } from '../../../models/entities/drive-file';
import { DriveFiles } from '../../../models';
-import { ensure } from '../../../prelude/ensure';
const logger = apLogger;
@@ -40,7 +39,7 @@ export async function createImage(actor: IRemoteUser, value: any): Promise<Drive
uri: image.url
});
- file = await DriveFiles.findOne(file.id).then(ensure);
+ file = await DriveFiles.findOneOrFail(file.id);
}
}
diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts
index feaee2f630..e3488800ca 100644
--- a/src/remote/activitypub/models/note.ts
+++ b/src/remote/activitypub/models/note.ts
@@ -21,7 +21,6 @@ import { IObject, getOneApId, getApId, getOneApHrefNullable, validPost, IPost, i
import { Emoji } from '../../../models/entities/emoji';
import { genId } from '../../../misc/gen-id';
import { fetchMeta } from '../../../misc/fetch-meta';
-import { ensure } from '../../../prelude/ensure';
import { getApLock } from '../../../misc/app-lock';
import { createMessage } from '../../../services/messages/create';
import { parseAudience } from '../audience';
@@ -201,7 +200,7 @@ export async function createNote(value: string | IObject, resolver?: Resolver, s
// vote
if (reply && reply.hasPoll) {
- const poll = await Polls.findOne(reply.id).then(ensure);
+ const poll = await Polls.findOneOrFail(reply.id);
const tryCreateVote = async (name: string, index: number): Promise<null> => {
if (poll.expiresAt && Date.now() > new Date(poll.expiresAt).getTime()) {
diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts
index 73a2ebc023..5840d67020 100644
--- a/src/remote/activitypub/models/person.ts
+++ b/src/remote/activitypub/models/person.ts
@@ -24,7 +24,6 @@ import { toPuny } from '../../../misc/convert-host';
import { UserProfile } from '../../../models/entities/user-profile';
import { validActor } from '../../../remote/activitypub/type';
import { getConnection } from 'typeorm';
-import { ensure } from '../../../prelude/ensure';
import { toArray } from '../../../prelude/array';
import { fetchInstanceMetadata } from '../../../services/fetch-instance-metadata';
import { normalizeForSearch } from '../../../misc/normalize-for-search';
@@ -457,7 +456,7 @@ export function analyzeAttachments(attachments: IObject | IObject[] | undefined)
}
export async function updateFeatured(userId: User['id']) {
- const user = await Users.findOne(userId).then(ensure);
+ const user = await Users.findOneOrFail(userId);
if (!Users.isRemoteUser(user)) return;
if (!user.featured) return;
diff --git a/src/remote/activitypub/renderer/follow-user.ts b/src/remote/activitypub/renderer/follow-user.ts
index 6d354803e5..bfc91bb4cb 100644
--- a/src/remote/activitypub/renderer/follow-user.ts
+++ b/src/remote/activitypub/renderer/follow-user.ts
@@ -1,13 +1,12 @@
import config from '../../../config';
import { Users } from '../../../models';
import { User } from '../../../models/entities/user';
-import { ensure } from '../../../prelude/ensure';
/**
* Convert (local|remote)(Follower|Followee)ID to URL
* @param id Follower|Followee ID
*/
export default async function renderFollowUser(id: User['id']): Promise<any> {
- const user = await Users.findOne(id).then(ensure);
+ const user = await Users.findOneOrFail(id);
return Users.isLocalUser(user) ? `${config.url}/users/${user.id}` : user.uri;
}
diff --git a/src/remote/activitypub/renderer/index.ts b/src/remote/activitypub/renderer/index.ts
index a34febff2f..e74affdadf 100644
--- a/src/remote/activitypub/renderer/index.ts
+++ b/src/remote/activitypub/renderer/index.ts
@@ -4,7 +4,6 @@ import { IActivity } from '../type';
import { LdSignature } from '../misc/ld-signature';
import { ILocalUser } from '../../../models/entities/user';
import { UserKeypairs } from '../../../models';
-import { ensure } from '../../../prelude/ensure';
export const renderActivity = (x: any): IActivity | null => {
if (x == null) return null;
@@ -24,9 +23,9 @@ export const renderActivity = (x: any): IActivity | null => {
export const attachLdSignature = async (activity: any, user: ILocalUser): Promise<IActivity | null> => {
if (activity == null) return null;
- const keypair = await UserKeypairs.findOne({
+ const keypair = await UserKeypairs.findOneOrFail({
userId: user.id
- }).then(ensure);
+ });
const obj = {
// as non-standards
diff --git a/src/remote/activitypub/renderer/note.ts b/src/remote/activitypub/renderer/note.ts
index 6878a402b8..8e3e0e9ba1 100644
--- a/src/remote/activitypub/renderer/note.ts
+++ b/src/remote/activitypub/renderer/note.ts
@@ -10,7 +10,6 @@ import { DriveFiles, Notes, Users, Emojis, Polls } from '../../../models';
import { In } from 'typeorm';
import { Emoji } from '../../../models/entities/emoji';
import { Poll } from '../../../models/entities/poll';
-import { ensure } from '../../../prelude/ensure';
export default async function renderNote(note: Note, dive = true, isTalk = false): Promise<any> {
const getPromisedFiles = async (ids: string[]) => {
@@ -54,7 +53,7 @@ export default async function renderNote(note: Note, dive = true, isTalk = false
}
}
- const user = await Users.findOne(note.userId).then(ensure);
+ const user = await Users.findOneOrFail(note.userId);
const attributedTo = `${config.url}/users/${user.id}`;
diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts
index 4462f88315..4907e3bc6f 100644
--- a/src/remote/activitypub/renderer/person.ts
+++ b/src/remote/activitypub/renderer/person.ts
@@ -9,7 +9,6 @@ import renderEmoji from './emoji';
import { IIdentifier } from '../models/identifier';
import renderHashtag from './hashtag';
import { DriveFiles, UserProfiles, UserKeypairs } from '../../../models';
-import { ensure } from '../../../prelude/ensure';
export async function renderPerson(user: ILocalUser) {
const id = `${config.url}/users/${user.id}`;
@@ -18,7 +17,7 @@ export async function renderPerson(user: ILocalUser) {
const [avatar, banner, profile] = await Promise.all([
user.avatarId ? DriveFiles.findOne(user.avatarId) : Promise.resolve(undefined),
user.bannerId ? DriveFiles.findOne(user.bannerId) : Promise.resolve(undefined),
- UserProfiles.findOne(user.id).then(ensure)
+ UserProfiles.findOneOrFail(user.id)
]);
const attachment: {
@@ -50,7 +49,7 @@ export async function renderPerson(user: ILocalUser) {
...hashtagTags,
];
- const keypair = await UserKeypairs.findOne(user.id).then(ensure);
+ const keypair = await UserKeypairs.findOneOrFail(user.id);
const person = {
type: isSystem ? 'Application' : user.isBot ? 'Service' : 'Person',
diff --git a/src/remote/activitypub/request.ts b/src/remote/activitypub/request.ts
index 0edfcee1e3..2f07351635 100644
--- a/src/remote/activitypub/request.ts
+++ b/src/remote/activitypub/request.ts
@@ -6,7 +6,6 @@ import * as crypto from 'crypto';
import config from '../../config';
import { ILocalUser } from '../../models/entities/user';
import { UserKeypairs } from '../../models';
-import { ensure } from '../../prelude/ensure';
import { getAgentByUrl } from '../../misc/fetch';
import { URL } from 'url';
import got from 'got';
@@ -23,9 +22,9 @@ export default async (user: ILocalUser, url: string, object: any) => {
sha256.update(data);
const hash = sha256.digest('base64');
- const keypair = await UserKeypairs.findOne({
+ const keypair = await UserKeypairs.findOneOrFail({
userId: user.id
- }).then(ensure);
+ });
await new Promise((resolve, reject) => {
const req = https.request({
@@ -75,9 +74,9 @@ export default async (user: ILocalUser, url: string, object: any) => {
export async function signedGet(url: string, user: ILocalUser) {
const timeout = 10 * 1000;
- const keypair = await UserKeypairs.findOne({
+ const keypair = await UserKeypairs.findOneOrFail({
userId: user.id
- }).then(ensure);
+ });
const req = got.get<any>(url, {
headers: {
diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts
index c665fe28ca..bf71258625 100644
--- a/src/server/activitypub.ts
+++ b/src/server/activitypub.ts
@@ -16,7 +16,6 @@ import { isSelfHost } from '../misc/convert-host';
import { Notes, Users, Emojis, UserKeypairs, NoteReactions } from '../models';
import { ILocalUser, User } from '../models/entities/user';
import { In } from 'typeorm';
-import { ensure } from '../prelude/ensure';
import { renderLike } from '../remote/activitypub/renderer/like';
// Init router
@@ -136,7 +135,7 @@ router.get('/users/:user/publickey', async ctx => {
return;
}
- const keypair = await UserKeypairs.findOne(user.id).then(ensure);
+ const keypair = await UserKeypairs.findOneOrFail(user.id);
if (Users.isLocalUser(user)) {
ctx.body = renderActivity(renderKey(user, keypair));
diff --git a/src/server/activitypub/featured.ts b/src/server/activitypub/featured.ts
index 80a7852f59..66ad2aa86e 100644
--- a/src/server/activitypub/featured.ts
+++ b/src/server/activitypub/featured.ts
@@ -5,7 +5,6 @@ import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-c
import { setResponseType } from '../activitypub';
import renderNote from '../../remote/activitypub/renderer/note';
import { Users, Notes, UserNotePinings } from '../../models';
-import { ensure } from '../../prelude/ensure';
export default async (ctx: Router.RouterContext) => {
const userId = ctx.params.user;
@@ -27,7 +26,7 @@ export default async (ctx: Router.RouterContext) => {
});
const pinnedNotes = await Promise.all(pinings.map(pining =>
- Notes.findOne(pining.noteId).then(ensure)));
+ Notes.findOneOrFail(pining.noteId)));
const renderedNotes = await Promise.all(pinnedNotes.map(note => renderNote(note)));
diff --git a/src/server/activitypub/outbox.ts b/src/server/activitypub/outbox.ts
index 03cf65bce6..3c1b07a679 100644
--- a/src/server/activitypub/outbox.ts
+++ b/src/server/activitypub/outbox.ts
@@ -15,7 +15,6 @@ import { Users, Notes } from '../../models';
import { makePaginationQuery } from '../api/common/make-pagination-query';
import { Brackets } from 'typeorm';
import { Note } from '../../models/entities/note';
-import { ensure } from '../../prelude/ensure';
export default async (ctx: Router.RouterContext) => {
const userId = ctx.params.user;
@@ -101,7 +100,7 @@ export default async (ctx: Router.RouterContext) => {
*/
export async function packActivity(note: Note): Promise<any> {
if (note.renoteId && note.text == null && !note.hasPoll && (note.fileIds == null || note.fileIds.length === 0)) {
- const renote = await Notes.findOne(note.renoteId).then(ensure);
+ const renote = await Notes.findOneOrFail(note.renoteId);
return renderAnnounce(renote.uri ? renote.uri : `${config.url}/notes/${renote.id}`, note);
}
diff --git a/src/server/api/authenticate.ts b/src/server/api/authenticate.ts
index 0785372b3b..0374ca35ea 100644
--- a/src/server/api/authenticate.ts
+++ b/src/server/api/authenticate.ts
@@ -1,7 +1,6 @@
import isNativeToken from './common/is-native-token';
import { User } from '../../models/entities/user';
import { Users, AccessTokens, Apps } from '../../models';
-import { ensure } from '../../prelude/ensure';
import { AccessToken } from '../../models/entities/access-token';
export default async (token: string): Promise<[User | null | undefined, AccessToken | null | undefined]> => {
@@ -43,7 +42,7 @@ export default async (token: string): Promise<[User | null | undefined, AccessTo
if (accessToken.appId) {
const app = await Apps
- .findOne(accessToken.appId).then(ensure);
+ .findOneOrFail(accessToken.appId);
return [user, {
id: accessToken.id,
diff --git a/src/server/api/common/inject-featured.ts b/src/server/api/common/inject-featured.ts
index 098d20e72d..3f47c13385 100644
--- a/src/server/api/common/inject-featured.ts
+++ b/src/server/api/common/inject-featured.ts
@@ -3,7 +3,6 @@ import { Note } from '../../../models/entities/note';
import { User } from '../../../models/entities/user';
import { Notes, UserProfiles, NoteReactions } from '../../../models';
import { generateMutedUserQuery } from './generate-muted-user-query';
-import { ensure } from '../../../prelude/ensure';
// TODO: リアクション、Renote、返信などをしたノートは除外する
@@ -11,7 +10,7 @@ export async function injectFeatured(timeline: Note[], user?: User | null) {
if (timeline.length < 5) return;
if (user) {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
if (!profile.injectFeaturedNote) return;
}
diff --git a/src/server/api/common/inject-promo.ts b/src/server/api/common/inject-promo.ts
index f694ce6ea0..2c16ca4cf7 100644
--- a/src/server/api/common/inject-promo.ts
+++ b/src/server/api/common/inject-promo.ts
@@ -2,7 +2,6 @@ import rndstr from 'rndstr';
import { Note } from '../../../models/entities/note';
import { User } from '../../../models/entities/user';
import { PromoReads, PromoNotes, Notes, Users } from '../../../models';
-import { ensure } from '../../../prelude/ensure';
export async function injectPromo(timeline: Note[], user?: User | null) {
if (timeline.length < 5) return;
@@ -23,10 +22,10 @@ export async function injectPromo(timeline: Note[], user?: User | null) {
// Pick random promo
const promo = promos[Math.floor(Math.random() * promos.length)];
- const note = await Notes.findOne(promo.noteId).then(ensure);
+ const note = await Notes.findOneOrFail(promo.noteId);
// Join
- note.user = await Users.findOne(note.userId).then(ensure);
+ note.user = await Users.findOneOrFail(note.userId);
(note as any)._prId_ = rndstr('a-z0-9', 8);
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 76497c0dd8..e593193552 100644
--- a/src/server/api/endpoints/admin/federation/remove-all-following.ts
+++ b/src/server/api/endpoints/admin/federation/remove-all-following.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import define from '../../../define';
import deleteFollowing from '../../../../../services/following/delete';
import { Followings, Users } from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
export const meta = {
tags: ['admin'],
@@ -23,8 +22,8 @@ export default define(meta, async (ps, me) => {
});
const pairs = await Promise.all(followings.map(f => Promise.all([
- Users.findOne(f.followerId).then(ensure),
- Users.findOne(f.followeeId).then(ensure)
+ Users.findOneOrFail(f.followerId),
+ Users.findOneOrFail(f.followeeId)
])));
for (const pair of pairs) {
diff --git a/src/server/api/endpoints/auth/accept.ts b/src/server/api/endpoints/auth/accept.ts
index e98242a3c3..6d4d31fa1e 100644
--- a/src/server/api/endpoints/auth/accept.ts
+++ b/src/server/api/endpoints/auth/accept.ts
@@ -4,7 +4,6 @@ import define from '../../define';
import { ApiError } from '../../error';
import { AuthSessions, AccessTokens, Apps } from '../../../../models';
import { genId } from '../../../../misc/gen-id';
-import { ensure } from '../../../../prelude/ensure';
import { secureRndstr } from '../../../../misc/secure-rndstr';
export const meta = {
@@ -49,7 +48,7 @@ export default define(meta, async (ps, user) => {
if (exist == null) {
// Lookup app
- const app = await Apps.findOne(session.appId).then(ensure);
+ const app = await Apps.findOneOrFail(session.appId);
// Generate Hash
const sha256 = crypto.createHash('sha256');
diff --git a/src/server/api/endpoints/auth/session/userkey.ts b/src/server/api/endpoints/auth/session/userkey.ts
index 7b474c8295..68d0c7bdf1 100644
--- a/src/server/api/endpoints/auth/session/userkey.ts
+++ b/src/server/api/endpoints/auth/session/userkey.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import define from '../../../define';
import { ApiError } from '../../../error';
import { Apps, AuthSessions, AccessTokens, Users } from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
export const meta = {
tags: ['auth'],
@@ -92,10 +91,10 @@ export default define(meta, async (ps) => {
}
// Lookup access token
- const accessToken = await AccessTokens.findOne({
+ const accessToken = await AccessTokens.findOneOrFail({
appId: app.id,
userId: session.userId
- }).then(ensure);
+ });
// Delete session
AuthSessions.delete(session.id);
diff --git a/src/server/api/endpoints/i.ts b/src/server/api/endpoints/i.ts
index 3d0c092adb..e5b65e0930 100644
--- a/src/server/api/endpoints/i.ts
+++ b/src/server/api/endpoints/i.ts
@@ -1,6 +1,5 @@
import define from '../define';
import { RegistryItems, UserProfiles, Users } from '../../../models';
-import { ensure } from '../../../prelude/ensure';
import { genId } from '../../../misc/gen-id';
export const meta = {
@@ -25,7 +24,7 @@ export default define(meta, async (ps, user, token) => {
const isSecure = token == null;
// TODO: そのうち消す
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
for (const [k, v] of Object.entries(profile.clientData)) {
await RegistryItems.insert({
id: genId(),
diff --git a/src/server/api/endpoints/i/2fa/done.ts b/src/server/api/endpoints/i/2fa/done.ts
index 7d35f929e0..9a74d7675b 100644
--- a/src/server/api/endpoints/i/2fa/done.ts
+++ b/src/server/api/endpoints/i/2fa/done.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import * as speakeasy from 'speakeasy';
import define from '../../../define';
import { UserProfiles } from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
export const meta = {
requireCredential: true as const,
@@ -19,7 +18,7 @@ export const meta = {
export default define(meta, async (ps, user) => {
const token = ps.token.replace(/\s/g, '');
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
if (profile.twoFactorTempSecret == null) {
throw new Error('二段階認証の設定が開始されていません');
diff --git a/src/server/api/endpoints/i/2fa/key-done.ts b/src/server/api/endpoints/i/2fa/key-done.ts
index 8ac165e629..4634944ca7 100644
--- a/src/server/api/endpoints/i/2fa/key-done.ts
+++ b/src/server/api/endpoints/i/2fa/key-done.ts
@@ -9,7 +9,6 @@ import {
AttestationChallenges,
Users
} from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
import config from '../../../../../config';
import { procedures, hash } from '../../../2fa';
import { publishMainStream } from '../../../../../services/stream';
@@ -43,7 +42,7 @@ export const meta = {
const rpIdHashReal = hash(Buffer.from(config.hostname, 'utf-8'));
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.password, profile.password!);
diff --git a/src/server/api/endpoints/i/2fa/register-key.ts b/src/server/api/endpoints/i/2fa/register-key.ts
index e189519a4c..d5cc11c7fb 100644
--- a/src/server/api/endpoints/i/2fa/register-key.ts
+++ b/src/server/api/endpoints/i/2fa/register-key.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../../define';
import { UserProfiles, AttestationChallenges } from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
import { promisify } from 'util';
import * as crypto from 'crypto';
import { genId } from '../../../../../misc/gen-id';
@@ -23,7 +22,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.password, profile.password!);
diff --git a/src/server/api/endpoints/i/2fa/register.ts b/src/server/api/endpoints/i/2fa/register.ts
index 784b276a26..a39b2963e9 100644
--- a/src/server/api/endpoints/i/2fa/register.ts
+++ b/src/server/api/endpoints/i/2fa/register.ts
@@ -5,7 +5,6 @@ import * as QRCode from 'qrcode';
import config from '../../../../../config';
import define from '../../../define';
import { UserProfiles } from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
export const meta = {
requireCredential: true as const,
@@ -20,7 +19,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.password, profile.password!);
diff --git a/src/server/api/endpoints/i/2fa/remove-key.ts b/src/server/api/endpoints/i/2fa/remove-key.ts
index 3eb92ba19d..135f0eb284 100644
--- a/src/server/api/endpoints/i/2fa/remove-key.ts
+++ b/src/server/api/endpoints/i/2fa/remove-key.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../../define';
import { UserProfiles, UserSecurityKeys, Users } from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
import { publishMainStream } from '../../../../../services/stream';
export const meta = {
@@ -21,7 +20,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.password, profile.password!);
diff --git a/src/server/api/endpoints/i/2fa/unregister.ts b/src/server/api/endpoints/i/2fa/unregister.ts
index f1287b2dca..e809f40c71 100644
--- a/src/server/api/endpoints/i/2fa/unregister.ts
+++ b/src/server/api/endpoints/i/2fa/unregister.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../../define';
import { UserProfiles } from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
export const meta = {
requireCredential: true as const,
@@ -17,7 +16,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.password, profile.password!);
diff --git a/src/server/api/endpoints/i/change-password.ts b/src/server/api/endpoints/i/change-password.ts
index bc2ec3d7b5..0a8b86e665 100644
--- a/src/server/api/endpoints/i/change-password.ts
+++ b/src/server/api/endpoints/i/change-password.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../define';
import { UserProfiles } from '../../../../models';
-import { ensure } from '../../../../prelude/ensure';
export const meta = {
requireCredential: true as const,
@@ -21,7 +20,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.currentPassword, profile.password!);
diff --git a/src/server/api/endpoints/i/delete-account.ts b/src/server/api/endpoints/i/delete-account.ts
index 49a3349170..0f04c4c92d 100644
--- a/src/server/api/endpoints/i/delete-account.ts
+++ b/src/server/api/endpoints/i/delete-account.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../define';
import { Users, UserProfiles } from '../../../../models';
-import { ensure } from '../../../../prelude/ensure';
import { doPostSuspend } from '../../../../services/suspend-user';
export const meta = {
@@ -18,7 +17,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.password, profile.password!);
diff --git a/src/server/api/endpoints/i/regenerate-token.ts b/src/server/api/endpoints/i/regenerate-token.ts
index 5d322aa122..3596e20197 100644
--- a/src/server/api/endpoints/i/regenerate-token.ts
+++ b/src/server/api/endpoints/i/regenerate-token.ts
@@ -4,7 +4,6 @@ import { publishMainStream } from '../../../../services/stream';
import generateUserToken from '../../common/generate-native-user-token';
import define from '../../define';
import { Users, UserProfiles } from '../../../../models';
-import { ensure } from '../../../../prelude/ensure';
export const meta = {
requireCredential: true as const,
@@ -19,7 +18,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.password, profile.password!);
diff --git a/src/server/api/endpoints/i/update-email.ts b/src/server/api/endpoints/i/update-email.ts
index d3d7bace75..730918aebe 100644
--- a/src/server/api/endpoints/i/update-email.ts
+++ b/src/server/api/endpoints/i/update-email.ts
@@ -6,7 +6,6 @@ import config from '../../../../config';
import * as ms from 'ms';
import * as bcrypt from 'bcryptjs';
import { Users, UserProfiles } from '../../../../models';
-import { ensure } from '../../../../prelude/ensure';
import { sendEmail } from '../../../../services/send-email';
import { ApiError } from '../../error';
@@ -40,7 +39,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(ps.password, profile.password!);
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index bf1796924a..3d7f1fa76f 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -13,7 +13,6 @@ import { ApiError } from '../../error';
import { Users, DriveFiles, UserProfiles, Pages } from '../../../../models';
import { User } from '../../../../models/entities/user';
import { UserProfile } from '../../../../models/entities/user-profile';
-import { ensure } from '../../../../prelude/ensure';
import { notificationTypes } from '../../../../types';
import { normalizeForSearch } from '../../../../misc/normalize-for-search';
@@ -206,7 +205,7 @@ export default define(meta, async (ps, user, token) => {
const updates = {} as Partial<User>;
const profileUpdates = {} as Partial<UserProfile>;
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
if (ps.name !== undefined) updates.name = ps.name;
if (ps.description !== undefined) profileUpdates.description = ps.description;
diff --git a/src/server/api/endpoints/notes/delete.ts b/src/server/api/endpoints/notes/delete.ts
index 65565ee3ab..5afd911ca9 100644
--- a/src/server/api/endpoints/notes/delete.ts
+++ b/src/server/api/endpoints/notes/delete.ts
@@ -6,7 +6,6 @@ import * as ms from 'ms';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
import { Users } from '../../../../models';
-import { ensure } from '../../../../prelude/ensure';
export const meta = {
desc: {
@@ -62,5 +61,5 @@ export default define(meta, async (ps, user) => {
}
// この操作を行うのが投稿者とは限らない(例えばモデレーター)ため
- await deleteNote(await Users.findOne(note.userId).then(ensure), note);
+ await deleteNote(await Users.findOneOrFail(note.userId), note);
});
diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts
index 1e6ab472cc..6113d7ea9a 100644
--- a/src/server/api/endpoints/notes/polls/vote.ts
+++ b/src/server/api/endpoints/notes/polls/vote.ts
@@ -13,7 +13,6 @@ import { PollVotes, NoteWatchings, Users, Polls } from '../../../../../models';
import { Not } from 'typeorm';
import { IRemoteUser } from '../../../../../models/entities/user';
import { genId } from '../../../../../misc/gen-id';
-import { ensure } from '../../../../../prelude/ensure';
export const meta = {
desc: {
@@ -87,7 +86,7 @@ export default define(meta, async (ps, user) => {
throw new ApiError(meta.errors.noPoll);
}
- const poll = await Polls.findOne({ noteId: note.id }).then(ensure);
+ const poll = await Polls.findOneOrFail({ noteId: note.id });
if (poll.expiresAt && poll.expiresAt < createdAt) {
throw new ApiError(meta.errors.alreadyExpired);
@@ -153,7 +152,7 @@ export default define(meta, async (ps, user) => {
// リモート投票の場合リプライ送信
if (note.userHost != null) {
- const pollOwner = await Users.findOne(note.userId).then(ensure) as IRemoteUser;
+ const pollOwner = await Users.findOneOrFail(note.userId) as IRemoteUser;
deliver(user, renderActivity(await renderVote(user, vote, note, poll, pollOwner)), pollOwner.inbox);
}
diff --git a/src/server/api/endpoints/room/show.ts b/src/server/api/endpoints/room/show.ts
index 96248a8c0c..e8af68956d 100644
--- a/src/server/api/endpoints/room/show.ts
+++ b/src/server/api/endpoints/room/show.ts
@@ -3,7 +3,6 @@ import define from '../../define';
import { ApiError } from '../../error';
import { Users, UserProfiles } from '../../../../models';
import { ID } from '../../../../misc/cafy-id';
-import { ensure } from '../../../../prelude/ensure';
import { toPunyNullable } from '../../../../misc/convert-host';
export const meta = {
@@ -51,7 +50,7 @@ export default define(meta, async (ps, me) => {
throw new ApiError(meta.errors.noSuchUser);
}
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
if (profile.room.furnitures == null) {
await UserProfiles.update(user.id, {
diff --git a/src/server/api/private/signin.ts b/src/server/api/private/signin.ts
index 734758d63d..7a5efc6cc9 100644
--- a/src/server/api/private/signin.ts
+++ b/src/server/api/private/signin.ts
@@ -6,7 +6,6 @@ import config from '../../../config';
import { Users, Signins, UserProfiles, UserSecurityKeys, AttestationChallenges } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
import { genId } from '../../../misc/gen-id';
-import { ensure } from '../../../prelude/ensure';
import { verifyLogin, hash } from '../2fa';
import { randomBytes } from 'crypto';
@@ -47,7 +46,7 @@ export default async (ctx: Koa.Context) => {
return;
}
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
// Compare password
const same = await bcrypt.compare(password, profile.password!);
diff --git a/src/server/api/service/discord.ts b/src/server/api/service/discord.ts
index 007458066d..fce840cde5 100644
--- a/src/server/api/service/discord.ts
+++ b/src/server/api/service/discord.ts
@@ -10,7 +10,6 @@ import signin from '../common/signin';
import { fetchMeta } from '../../../misc/fetch-meta';
import { Users, UserProfiles } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
-import { ensure } from '../../../prelude/ensure';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
@@ -41,12 +40,12 @@ router.get('/disconnect/discord', async ctx => {
return;
}
- const user = await Users.findOne({
+ const user = await Users.findOneOrFail({
host: null,
token: userToken
- }).then(ensure);
+ });
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
delete profile.integrations.discord;
@@ -253,12 +252,12 @@ router.get('/dc/cb', async ctx => {
return;
}
- const user = await Users.findOne({
+ const user = await Users.findOneOrFail({
host: null,
token: userToken
- }).then(ensure);
+ });
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
await UserProfiles.update(user.id, {
integrations: {
diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts
index 663c3cc754..2b10fa02a0 100644
--- a/src/server/api/service/github.ts
+++ b/src/server/api/service/github.ts
@@ -10,7 +10,6 @@ import signin from '../common/signin';
import { fetchMeta } from '../../../misc/fetch-meta';
import { Users, UserProfiles } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
-import { ensure } from '../../../prelude/ensure';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
@@ -41,12 +40,12 @@ router.get('/disconnect/github', async ctx => {
return;
}
- const user = await Users.findOne({
+ const user = await Users.findOneOrFail({
host: null,
token: userToken
- }).then(ensure);
+ });
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
delete profile.integrations.github;
@@ -227,12 +226,12 @@ router.get('/gh/cb', async ctx => {
return;
}
- const user = await Users.findOne({
+ const user = await Users.findOneOrFail({
host: null,
token: userToken
- }).then(ensure);
+ });
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
await UserProfiles.update(user.id, {
integrations: {
diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts
index 000eb57c1b..97e9d3a7fc 100644
--- a/src/server/api/service/twitter.ts
+++ b/src/server/api/service/twitter.ts
@@ -9,7 +9,6 @@ import signin from '../common/signin';
import { fetchMeta } from '../../../misc/fetch-meta';
import { Users, UserProfiles } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
-import { ensure } from '../../../prelude/ensure';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
@@ -40,12 +39,12 @@ router.get('/disconnect/twitter', async ctx => {
return;
}
- const user = await Users.findOne({
+ const user = await Users.findOneOrFail({
host: null,
token: userToken
- }).then(ensure);
+ });
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
delete profile.integrations.twitter;
@@ -163,12 +162,12 @@ router.get('/tw/cb', async ctx => {
const result = await twAuth!.done(JSON.parse(twCtx), verifier);
- const user = await Users.findOne({
+ const user = await Users.findOneOrFail({
host: null,
token: userToken
- }).then(ensure);
+ });
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
await UserProfiles.update(user.id, {
integrations: {
diff --git a/src/server/web/feed.ts b/src/server/web/feed.ts
index 9c7591d744..6078fbe0f3 100644
--- a/src/server/web/feed.ts
+++ b/src/server/web/feed.ts
@@ -3,7 +3,6 @@ import config from '../../config';
import { User } from '../../models/entities/user';
import { Notes, DriveFiles, UserProfiles } from '../../models';
import { In } from 'typeorm';
-import { ensure } from '../../prelude/ensure';
export default async function(user: User) {
const author = {
@@ -11,7 +10,7 @@ export default async function(user: User) {
name: user.name || user.username
};
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
const notes = await Notes.find({
where: {
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index f3442c6199..8ea7e15751 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -20,7 +20,6 @@ import config from '../../config';
import { Users, Notes, Emojis, UserProfiles, Pages, Channels, Clips } from '../../models';
import parseAcct from '../../misc/acct/parse';
import { getNoteSummary } from '../../misc/get-note-summary';
-import { ensure } from '../../prelude/ensure';
import { getConnection } from 'typeorm';
import redis from '../../db/redis';
import locales = require('../../../locales');
@@ -199,7 +198,7 @@ router.get(['/@:user', '/@:user/:sub'], async (ctx, next) => {
});
if (user != null) {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(user.id);
const meta = await fetchMeta();
const me = profile.fields
? profile.fields
@@ -242,7 +241,7 @@ router.get('/notes/:note', async ctx => {
if (note) {
const _note = await Notes.pack(note);
- const profile = await UserProfiles.findOne(note.userId).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(note.userId);
const meta = await fetchMeta();
await ctx.render('note', {
note: _note,
@@ -282,7 +281,7 @@ router.get('/@:user/pages/:page', async ctx => {
if (page) {
const _page = await Pages.pack(page);
- const profile = await UserProfiles.findOne(page.userId).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(page.userId);
const meta = await fetchMeta();
await ctx.render('page', {
page: _page,
@@ -311,7 +310,7 @@ router.get('/clips/:clip', async ctx => {
if (clip) {
const _clip = await Clips.pack(clip);
- const profile = await UserProfiles.findOne(clip.userId).then(ensure);
+ const profile = await UserProfiles.findOneOrFail(clip.userId);
const meta = await fetchMeta();
await ctx.render('clip', {
clip: _clip,
diff --git a/src/services/add-note-to-antenna.ts b/src/services/add-note-to-antenna.ts
index f11607fd43..2c893488c3 100644
--- a/src/services/add-note-to-antenna.ts
+++ b/src/services/add-note-to-antenna.ts
@@ -3,7 +3,6 @@ import { Note } from '../models/entities/note';
import { AntennaNotes, Mutings, Notes } from '../models';
import { genId } from '../misc/gen-id';
import { isMutedUserRelated } from '../misc/is-muted-user-related';
-import { ensure } from '../prelude/ensure';
import { publishAntennaStream, publishMainStream } from './stream';
import { User } from '../models/entities/user';
@@ -34,10 +33,10 @@ export async function addNoteToAntenna(antenna: Antenna, note: Note, noteUser: U
};
if (note.replyId != null) {
- _note.reply = await Notes.findOne(note.replyId).then(ensure);
+ _note.reply = await Notes.findOneOrFail(note.replyId);
}
if (note.renoteId != null) {
- _note.renote = await Notes.findOne(note.renoteId).then(ensure);
+ _note.renote = await Notes.findOneOrFail(note.renoteId);
}
if (isMutedUserRelated(_note, new Set<string>(mutings.map(x => x.muteeId)))) {
diff --git a/src/services/following/create.ts b/src/services/following/create.ts
index c5f130f49f..c0583cdb86 100644
--- a/src/services/following/create.ts
+++ b/src/services/following/create.ts
@@ -14,7 +14,6 @@ import { instanceChart, perUserFollowingChart } from '../chart';
import { genId } from '../../misc/gen-id';
import { createNotification } from '../create-notification';
import { isDuplicateKeyValueError } from '../../misc/is-duplicate-key-value-error';
-import { ensure } from '../../prelude/ensure';
const logger = new Logger('following/create');
@@ -130,7 +129,7 @@ export default async function(follower: User, followee: User, requestId?: string
if (blocked != null) throw new IdentifiableError('3338392a-f764-498d-8855-db939dcf8c48', 'blocked');
}
- const followeeProfile = await UserProfiles.findOne(followee.id).then(ensure);
+ const followeeProfile = await UserProfiles.findOneOrFail(followee.id);
// フォロー対象が鍵アカウントである or
// フォロワーがBotであり、フォロー対象がBotからのフォローに慎重である or
diff --git a/src/services/following/requests/accept-all.ts b/src/services/following/requests/accept-all.ts
index 70e7448aad..da39965349 100644
--- a/src/services/following/requests/accept-all.ts
+++ b/src/services/following/requests/accept-all.ts
@@ -1,7 +1,6 @@
import accept from './accept';
import { User } from '../../../models/entities/user';
import { FollowRequests, Users } from '../../../models';
-import { ensure } from '../../../prelude/ensure';
/**
* 指定したユーザー宛てのフォローリクエストをすべて承認
@@ -13,7 +12,7 @@ export default async function(user: User) {
});
for (const request of requests) {
- const follower = await Users.findOne(request.followerId).then(ensure);
+ const follower = await Users.findOneOrFail(request.followerId);
accept(user, follower);
}
}
diff --git a/src/services/messages/delete.ts b/src/services/messages/delete.ts
index 0efff85f39..c94a7b67db 100644
--- a/src/services/messages/delete.ts
+++ b/src/services/messages/delete.ts
@@ -1,5 +1,4 @@
import config from '../../config';
-import { ensure } from '../../prelude/ensure';
import { MessagingMessages, Users } from '../../models';
import { MessagingMessage } from '../../models/entities/messaging-message';
import { publishGroupMessagingStream, publishMessagingStream } from '../stream';
@@ -15,8 +14,8 @@ export async function deleteMessage(message: MessagingMessage) {
async function postDeleteMessage(message: MessagingMessage) {
if (message.recipientId) {
- const user = await Users.findOne(message.userId).then(ensure);
- const recipient = await Users.findOne(message.recipientId).then(ensure);
+ const user = await Users.findOneOrFail(message.userId);
+ const recipient = await Users.findOneOrFail(message.recipientId);
if (Users.isLocalUser(user)) publishMessagingStream(message.userId, message.recipientId, 'deleted', message.id);
if (Users.isLocalUser(recipient)) publishMessagingStream(message.recipientId, message.userId, 'deleted', message.id);
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index 62ec92f2bc..563eaac758 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -26,7 +26,6 @@ import { notesChart, perUserNotesChart, activeUsersChart, instanceChart } from '
import { Poll, IPoll } from '../../models/entities/poll';
import { createNotification } from '../create-notification';
import { isDuplicateKeyValueError } from '../../misc/is-duplicate-key-value-error';
-import { ensure } from '../../prelude/ensure';
import { checkHitAntenna } from '../../misc/check-hit-antenna';
import { checkWordMute } from '../../misc/check-word-mute';
import { addNoteToAntenna } from '../add-note-to-antenna';
@@ -200,7 +199,7 @@ export default async (user: User, data: Option, silent = false) => new Promise<N
tags = tags.filter(tag => Array.from(tag || '').length <= 128).splice(0, 32);
if (data.reply && (user.id !== data.reply.userId) && !mentionedUsers.some(u => u.id === data.reply!.userId)) {
- mentionedUsers.push(await Users.findOne(data.reply.userId).then(ensure));
+ mentionedUsers.push(await Users.findOneOrFail(data.reply.userId));
}
if (data.visibility == 'specified') {
@@ -213,7 +212,7 @@ export default async (user: User, data: Option, silent = false) => new Promise<N
}
if (data.reply && !data.visibleUsers.some(x => x.id === data.reply!.userId)) {
- data.visibleUsers.push(await Users.findOne(data.reply.userId).then(ensure));
+ data.visibleUsers.push(await Users.findOneOrFail(data.reply.userId));
}
}