summaryrefslogtreecommitdiff
path: root/src/api/serializers
diff options
context:
space:
mode:
authorotofune <otofune@gmail.com>2017-11-05 22:22:49 +0900
committerotofune <otofune@gmail.com>2017-11-05 22:22:49 +0900
commit5aa5e5cc7074003cec3417636ea1972b6d88150d (patch)
treef7cb54a62411a48bbd9224fd5938dfe7aa34b83f /src/api/serializers
parentserializers/post - run promises in parallel (diff)
downloadsharkey-5aa5e5cc7074003cec3417636ea1972b6d88150d.tar.gz
sharkey-5aa5e5cc7074003cec3417636ea1972b6d88150d.tar.bz2
sharkey-5aa5e5cc7074003cec3417636ea1972b6d88150d.zip
serializers - user: run promises in parallel as possible
Diffstat (limited to 'src/api/serializers')
-rw-r--r--src/api/serializers/post.ts2
-rw-r--r--src/api/serializers/user.ts40
2 files changed, 24 insertions, 18 deletions
diff --git a/src/api/serializers/post.ts b/src/api/serializers/post.ts
index 352932acff..99e9bb667c 100644
--- a/src/api/serializers/post.ts
+++ b/src/api/serializers/post.ts
@@ -12,7 +12,7 @@ import serializeChannel from './channel';
import serializeUser from './user';
import serializeDriveFile from './drive-file';
import parse from '../common/text';
-import rap from '@prezzemolo/rap'
+import rap from '@prezzemolo/rap';
/**
* Serialize a post
diff --git a/src/api/serializers/user.ts b/src/api/serializers/user.ts
index 3deff2d003..3527921ded 100644
--- a/src/api/serializers/user.ts
+++ b/src/api/serializers/user.ts
@@ -8,6 +8,7 @@ import serializePost from './post';
import Following from '../models/following';
import getFriends from '../common/get-friends';
import config from '../../conf';
+import rap from '@prezzemolo/rap';
/**
* Serialize a user
@@ -104,26 +105,30 @@ export default (
if (meId && !meId.equals(_user.id)) {
// If the user is following
- const follow = await Following.findOne({
- follower_id: meId,
- followee_id: _user.id,
- deleted_at: { $exists: false }
- });
- _user.is_following = follow !== null;
+ _user.is_following = (async () => {
+ const follow = await Following.findOne({
+ follower_id: meId,
+ followee_id: _user.id,
+ deleted_at: { $exists: false }
+ });
+ return follow !== null;
+ })()
// If the user is followed
- const follow2 = await Following.findOne({
- follower_id: _user.id,
- followee_id: meId,
- deleted_at: { $exists: false }
- });
- _user.is_followed = follow2 !== null;
+ _user.is_followed = (async () => {
+ const follow2 = await Following.findOne({
+ follower_id: _user.id,
+ followee_id: meId,
+ deleted_at: { $exists: false }
+ });
+ return follow2 !== null;
+ })()
}
if (opts.detail) {
if (_user.pinned_post_id) {
// Populate pinned post
- _user.pinned_post = await serializePost(_user.pinned_post_id, meId, {
+ _user.pinned_post = serializePost(_user.pinned_post_id, meId, {
detail: true
});
}
@@ -132,23 +137,24 @@ export default (
const myFollowingIds = await getFriends(meId);
// Get following you know count
- const followingYouKnowCount = await Following.count({
+ _user.following_you_know_count = Following.count({
followee_id: { $in: myFollowingIds },
follower_id: _user.id,
deleted_at: { $exists: false }
});
- _user.following_you_know_count = followingYouKnowCount;
// Get followers you know count
- const followersYouKnowCount = await Following.count({
+ _user.followers_you_know_count = Following.count({
followee_id: _user.id,
follower_id: { $in: myFollowingIds },
deleted_at: { $exists: false }
});
- _user.followers_you_know_count = followersYouKnowCount;
}
}
+ // resolve promises in _user object
+ _user = await rap(_user)
+
resolve(_user);
});
/*