summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/users.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-11-23 08:01:14 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-11-23 08:01:14 +0900
commit246cead2b1e179a02d81793a5515688539c788cd (patch)
treea6114fdd6f96dbc6d0ba47843b9be29af7f1023c /src/server/api/endpoints/users.ts
parentUpdate systeminformation requirement from 3.47.0 to 3.49.3 (#3374) (diff)
downloadmisskey-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.ts45
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 }))));
}));