diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-23 08:01:14 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-23 08:01:14 +0900 |
| commit | 246cead2b1e179a02d81793a5515688539c788cd (patch) | |
| tree | a6114fdd6f96dbc6d0ba47843b9be29af7f1023c /src/server/api/endpoints/users.ts | |
| parent | Update systeminformation requirement from 3.47.0 to 3.49.3 (#3374) (diff) | |
| download | misskey-246cead2b1e179a02d81793a5515688539c788cd.tar.gz misskey-246cead2b1e179a02d81793a5515688539c788cd.tar.bz2 misskey-246cead2b1e179a02d81793a5515688539c788cd.zip | |
Improve user operations
Resolve #2197
Resolve #3367
Diffstat (limited to 'src/server/api/endpoints/users.ts')
| -rw-r--r-- | src/server/api/endpoints/users.ts | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/src/server/api/endpoints/users.ts b/src/server/api/endpoints/users.ts index 203b4a53c8..aef5bd8507 100644 --- a/src/server/api/endpoints/users.ts +++ b/src/server/api/endpoints/users.ts @@ -17,7 +17,23 @@ export const meta = { }, sort: { - validator: $.str.optional.or('+follower|-follower'), + validator: $.str.optional.or([ + '+follower', + '-follower', + '+createdAt', + '-createdAt', + '+updatedAt', + '-updatedAt', + ]), + }, + + origin: { + validator: $.str.optional.or([ + 'combined', + 'local', + 'remote', + ]), + default: 'local' } } }; @@ -33,6 +49,22 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { _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 = { @@ -40,14 +72,17 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { }; } + const q = + ps.origin == 'local' ? { host: null } : + ps.origin == 'remote' ? { host: { $ne: null } } : + {}; + const users = await User - .find({ - host: null - }, { + .find(q, { limit: ps.limit, sort: _sort, skip: ps.offset }); - res(await Promise.all(users.map(user => pack(user, me)))); + res(await Promise.all(users.map(user => pack(user, me, { detail: true })))); })); |