From 357528d1399f4f7046c4cd8ed1a9884ffbba905f Mon Sep 17 00:00:00 2001 From: "Acid Chicken (硫酸鶏)" Date: Sun, 17 Feb 2019 21:40:53 +0900 Subject: Use object instead of if chain (#4212) --- src/server/api/endpoints/admin/drive/files.ts | 36 +++------- src/server/api/endpoints/admin/show-users.ts | 46 ++++-------- src/server/api/endpoints/users.ts | 100 +++++++++++--------------- 3 files changed, 62 insertions(+), 120 deletions(-) (limited to 'src/server/api/endpoints') diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts index 12b2bac376..3a837e4189 100644 --- a/src/server/api/endpoints/admin/drive/files.ts +++ b/src/server/api/endpoints/admin/drive/files.ts @@ -1,6 +1,7 @@ import $ from 'cafy'; import File, { packMany } from '../../../../../models/drive-file'; import define from '../../../define'; +import { fallback } from '../../../../../prelude/symbol'; export const meta = { requireCredential: false, @@ -37,32 +38,15 @@ export const meta = { } }; -export default define(meta, (ps, me) => new Promise(async (res, rej) => { - let _sort; - if (ps.sort) { - if (ps.sort == '+createdAt') { - _sort = { - uploadDate: -1 - }; - } else if (ps.sort == '-createdAt') { - _sort = { - uploadDate: 1 - }; - } else if (ps.sort == '+size') { - _sort = { - length: -1 - }; - } else if (ps.sort == '-size') { - _sort = { - length: 1 - }; - } - } else { - _sort = { - _id: -1 - }; - } +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 } +}; +export default define(meta, (ps, me) => new Promise(async (res, rej) => { const q = { 'metadata.deletedAt': { $exists: false }, } as any; @@ -73,7 +57,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { const files = await File .find(q, { limit: ps.limit, - sort: _sort, + sort: sort[ps.sort] || sort[fallback], skip: ps.offset }); diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts index cc21b4e672..3646f96d7d 100644 --- a/src/server/api/endpoints/admin/show-users.ts +++ b/src/server/api/endpoints/admin/show-users.ts @@ -1,6 +1,7 @@ import $ from 'cafy'; import User, { pack } from '../../../../models/user'; import define from '../../define'; +import { fallback } from '../../../../prelude/symbol'; export const meta = { requireCredential: true, @@ -52,40 +53,17 @@ export const meta = { } }; -export default define(meta, (ps, me) => new Promise(async (res, rej) => { - let _sort; - if (ps.sort) { - if (ps.sort == '+follower') { - _sort = { - followersCount: -1 - }; - } else if (ps.sort == '-follower') { - _sort = { - followersCount: 1 - }; - } else if (ps.sort == '+createdAt') { - _sort = { - createdAt: -1 - }; - } else if (ps.sort == '+updatedAt') { - _sort = { - updatedAt: -1 - }; - } else if (ps.sort == '-createdAt') { - _sort = { - createdAt: 1 - }; - } else if (ps.sort == '-updatedAt') { - _sort = { - updatedAt: 1 - }; - } - } else { - _sort = { - _id: -1 - }; - } +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, (ps, me) => new Promise(async (res, rej) => { const q = { $and: [] } as any; @@ -117,7 +95,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { const users = await User .find(q, { limit: ps.limit, - sort: _sort, + sort: sort[ps.sort] || sort[fallback], skip: ps.offset }); diff --git a/src/server/api/endpoints/users.ts b/src/server/api/endpoints/users.ts index fa35235a1d..c17f8c1b5b 100644 --- a/src/server/api/endpoints/users.ts +++ b/src/server/api/endpoints/users.ts @@ -1,6 +1,9 @@ import $ from 'cafy'; import User, { pack } from '../../../models/user'; import define from '../define'; +import { fallback } from '../../../prelude/symbol'; + +const nonnull = { $ne: null }; export const meta = { requireCredential: false, @@ -50,71 +53,48 @@ export const meta = { } }; -export default define(meta, (ps, me) => new Promise(async (res, rej) => { - let _sort; - if (ps.sort) { - if (ps.sort == '+follower') { - _sort = { - followersCount: -1 - }; - } else if (ps.sort == '-follower') { - _sort = { - followersCount: 1 - }; - } else if (ps.sort == '+createdAt') { - _sort = { - createdAt: -1 - }; - } else if (ps.sort == '+updatedAt') { - _sort = { - updatedAt: -1 - }; - } else if (ps.sort == '-createdAt') { - _sort = { - createdAt: 1 - }; - } else if (ps.sort == '-updatedAt') { - _sort = { - updatedAt: 1 - }; - } - } else { - _sort = { - _id: -1 - }; - } - - const q = { - $and: [] - } as any; +const state: any = { // < https://github.com/Microsoft/TypeScript/issues/1863 + 'admin': { isAdmin: true }, + 'moderator': { isModerator: true }, + 'adminOrModerator': { + $or: [ + { isAdmin: true }, + { isModerator: true } + ] + }, + 'verified': { isVerified: true }, + 'alive': { + updatedAt: { $gt: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) } + }, + [fallback]: {} +}; - // 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 == 'alive' ? { updatedAt: { $gt: new Date(Date.now() - (1000 * 60 * 60 * 24 * 5)) } } : - {} - ); +const origin: any = { // < https://github.com/Microsoft/TypeScript/issues/1863 + 'local': { host: null }, + 'remote': { host: nonnull }, + [fallback]: {} +}; - // origin - q.$and.push( - ps.origin == 'local' ? { host: null } : - ps.origin == 'remote' ? { host: { $ne: null } } : - {} - ); +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, (ps, me) => new Promise(async (res, rej) => { const users = await User - .find(q, { + .find({ + $and: [ + state[ps.state] || state[fallback], + origin[ps.origin] || origin[fallback] + ] + }, { limit: ps.limit, - sort: _sort, + sort: sort[ps.sort] || sort[fallback], skip: ps.offset }); -- cgit v1.2.3-freya