yumechi-no-kuni/src/server/api/common/get-friends.ts

52 lines
1.1 KiB
TypeScript
Raw Normal View History

2016-12-28 16:49:51 -06:00
import * as mongodb from 'mongodb';
2018-03-29 06:32:18 -05:00
import Following from '../../../models/following';
2016-12-28 16:49:51 -06:00
2018-04-18 22:43:25 -05:00
export const getFriendIds = async (me: mongodb.ObjectID, includeMe = true) => {
2016-12-28 16:49:51 -06:00
// Fetch relation to other users who the I follows
// SELECT followee
2018-04-18 22:43:25 -05:00
const followings = await Following
2016-12-28 16:49:51 -06:00
.find({
followerId: me
2016-12-28 16:49:51 -06:00
}, {
2017-01-17 15:10:56 -06:00
fields: {
2018-03-29 00:48:47 -05:00
followeeId: true
2017-01-17 15:10:56 -06:00
}
2017-01-16 20:11:22 -06:00
});
2016-12-28 16:49:51 -06:00
// ID list of other users who the I follows
2018-04-18 22:43:25 -05:00
const myfollowingIds = followings.map(following => following.followeeId);
2016-12-28 16:49:51 -06:00
if (includeMe) {
myfollowingIds.push(me);
}
return myfollowingIds;
};
2018-04-18 22:43:25 -05:00
2018-07-11 00:03:21 -05:00
export const getFriends = async (me: mongodb.ObjectID, includeMe = true, remoteOnly = false) => {
const q: any = remoteOnly ? {
followerId: me,
'_followee.host': { $ne: null }
} : {
followerId: me
};
2018-04-18 22:43:25 -05:00
// Fetch relation to other users who the I follows
const followings = await Following
2018-07-11 00:03:21 -05:00
.find(q);
2018-04-18 22:43:25 -05:00
// ID list of other users who the I follows
const myfollowings = followings.map(following => ({
id: following.followeeId,
stalk: following.stalk
}));
if (includeMe) {
myfollowings.push({
id: me,
stalk: true
});
}
return myfollowings;
};