Use object instead of if chain (#4212)
This commit is contained in:
parent
c4efbdf4c7
commit
357528d139
4 changed files with 65 additions and 122 deletions
1
src/prelude/symbol.ts
Normal file
1
src/prelude/symbol.ts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
export const fallback = Symbol('fallback');
|
|
@ -1,6 +1,7 @@
|
||||||
import $ from 'cafy';
|
import $ from 'cafy';
|
||||||
import File, { packMany } from '../../../../../models/drive-file';
|
import File, { packMany } from '../../../../../models/drive-file';
|
||||||
import define from '../../../define';
|
import define from '../../../define';
|
||||||
|
import { fallback } from '../../../../../prelude/symbol';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
requireCredential: false,
|
requireCredential: false,
|
||||||
|
@ -37,32 +38,15 @@ export const meta = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export default define(meta, (ps, me) => new Promise(async (res, rej) => {
|
const sort: any = { // < https://github.com/Microsoft/TypeScript/issues/1863
|
||||||
let _sort;
|
'+createdAt': { uploadDate: -1 },
|
||||||
if (ps.sort) {
|
'-createdAt': { uploadDate: 1 },
|
||||||
if (ps.sort == '+createdAt') {
|
'+size': { length: -1 },
|
||||||
_sort = {
|
'-size': { length: 1 },
|
||||||
uploadDate: -1
|
[fallback]: { _id: -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
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
export default define(meta, (ps, me) => new Promise(async (res, rej) => {
|
||||||
const q = {
|
const q = {
|
||||||
'metadata.deletedAt': { $exists: false },
|
'metadata.deletedAt': { $exists: false },
|
||||||
} as any;
|
} as any;
|
||||||
|
@ -73,7 +57,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
|
||||||
const files = await File
|
const files = await File
|
||||||
.find(q, {
|
.find(q, {
|
||||||
limit: ps.limit,
|
limit: ps.limit,
|
||||||
sort: _sort,
|
sort: sort[ps.sort] || sort[fallback],
|
||||||
skip: ps.offset
|
skip: ps.offset
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import $ from 'cafy';
|
import $ from 'cafy';
|
||||||
import User, { pack } from '../../../../models/user';
|
import User, { pack } from '../../../../models/user';
|
||||||
import define from '../../define';
|
import define from '../../define';
|
||||||
|
import { fallback } from '../../../../prelude/symbol';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
requireCredential: true,
|
requireCredential: true,
|
||||||
|
@ -52,40 +53,17 @@ export const meta = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export default define(meta, (ps, me) => new Promise(async (res, rej) => {
|
const sort: any = { // < https://github.com/Microsoft/TypeScript/issues/1863
|
||||||
let _sort;
|
'+follower': { followersCount: -1 },
|
||||||
if (ps.sort) {
|
'-follower': { followersCount: 1 },
|
||||||
if (ps.sort == '+follower') {
|
'+createdAt': { createdAt: -1 },
|
||||||
_sort = {
|
'-createdAt': { createdAt: 1 },
|
||||||
followersCount: -1
|
'+updatedAt': { updatedAt: -1 },
|
||||||
};
|
'-updatedAt': { updatedAt: 1 },
|
||||||
} else if (ps.sort == '-follower') {
|
[fallback]: { _id: -1 }
|
||||||
_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
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
export default define(meta, (ps, me) => new Promise(async (res, rej) => {
|
||||||
const q = {
|
const q = {
|
||||||
$and: []
|
$and: []
|
||||||
} as any;
|
} as any;
|
||||||
|
@ -117,7 +95,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
|
||||||
const users = await User
|
const users = await User
|
||||||
.find(q, {
|
.find(q, {
|
||||||
limit: ps.limit,
|
limit: ps.limit,
|
||||||
sort: _sort,
|
sort: sort[ps.sort] || sort[fallback],
|
||||||
skip: ps.offset
|
skip: ps.offset
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import $ from 'cafy';
|
import $ from 'cafy';
|
||||||
import User, { pack } from '../../../models/user';
|
import User, { pack } from '../../../models/user';
|
||||||
import define from '../define';
|
import define from '../define';
|
||||||
|
import { fallback } from '../../../prelude/symbol';
|
||||||
|
|
||||||
|
const nonnull = { $ne: null };
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
requireCredential: false,
|
requireCredential: false,
|
||||||
|
@ -50,71 +53,48 @@ export const meta = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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]: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
const origin: any = { // < https://github.com/Microsoft/TypeScript/issues/1863
|
||||||
|
'local': { host: null },
|
||||||
|
'remote': { host: nonnull },
|
||||||
|
[fallback]: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
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) => {
|
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;
|
|
||||||
|
|
||||||
// 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)) } } :
|
|
||||||
{}
|
|
||||||
);
|
|
||||||
|
|
||||||
// origin
|
|
||||||
q.$and.push(
|
|
||||||
ps.origin == 'local' ? { host: null } :
|
|
||||||
ps.origin == 'remote' ? { host: { $ne: null } } :
|
|
||||||
{}
|
|
||||||
);
|
|
||||||
|
|
||||||
const users = await User
|
const users = await User
|
||||||
.find(q, {
|
.find({
|
||||||
|
$and: [
|
||||||
|
state[ps.state] || state[fallback],
|
||||||
|
origin[ps.origin] || origin[fallback]
|
||||||
|
]
|
||||||
|
}, {
|
||||||
limit: ps.limit,
|
limit: ps.limit,
|
||||||
sort: _sort,
|
sort: sort[ps.sort] || sort[fallback],
|
||||||
skip: ps.offset
|
skip: ps.offset
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue