Skip to content

Commit

Permalink
Lookup user in timeline
Browse files Browse the repository at this point in the history
  • Loading branch information
mei23 committed Mar 21, 2021
1 parent b774583 commit c20f85e
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 51 deletions.
5 changes: 4 additions & 1 deletion src/models/note.ts
Expand Up @@ -128,6 +128,9 @@ export type INote = {
inbox?: string;
};
_files?: IDriveFile[];

// Lookuped
__user?: IUser;
};

export type IPoll = {
Expand Down Expand Up @@ -388,7 +391,7 @@ export const pack = async (
text: text,
cw: db.cw,
userId: toOidString(db.userId),
user: packUser(db.userId, meId),
user: packUser(db.__user as IUser || db.userId, meId),
replyId: db.replyId ? `${db.replyId}` : null,
renoteId: db.renoteId ? `${db.renoteId}` : null,
viaMobile: !!db.viaMobile,
Expand Down
49 changes: 49 additions & 0 deletions src/server/api/common/get-timeline.ts
@@ -0,0 +1,49 @@
import Note, { INote, packMany } from '../../../models/note';
import { ILocalUser } from '../../../models/user';

export async function getPackedTimeline(me: ILocalUser | null, query: any, sort: Record<string, number>, limit: number) {
const timeline = await Note.aggregate<INote[]>([
{
$match: query
}, {
$sort: sort
}, {
$limit: limit
}, {
$lookup: {
from: 'users',
let: { userId: '$userId' },
pipeline: [
{
$match: {
$expr: {
$eq: [ '$_id', '$$userId' ]
}
}
}, {
$project: {
name: true,
username: true,
host: true,
avatarId: true,
emojis: true,
isCat: true,
isBot: true,
isAdmin: true,
} // $project in pipeline
}
], // pipeline
as: '__user',
} // $lookup
}, {
$unwind: {
path: '$__user'
}
}
], // aggregates
{
maxTimeMS: 25000,
});

return await packMany(timeline, me);
}
10 changes: 2 additions & 8 deletions src/server/api/endpoints/notes/global-timeline.ts
@@ -1,11 +1,10 @@
import $ from 'cafy';
import ID, { transform } from '../../../../misc/cafy-id';
import Note from '../../../../models/note';
import { packMany } from '../../../../models/note';
import define from '../../define';
import fetchMeta from '../../../../misc/fetch-meta';
import { getHideUserIds } from '../../common/get-hide-users';
import { ApiError } from '../../error';
import { getPackedTimeline } from '../../common/get-timeline';

export const meta = {
desc: {
Expand Down Expand Up @@ -186,10 +185,5 @@ export default define(meta, async (ps, user) => {
}
//#endregion

const timeline = await Note.find(query, {
limit: ps.limit,
sort: sort
});

return await packMany(timeline, user);
return await getPackedTimeline(user, query, sort, ps.limit!);
});
10 changes: 2 additions & 8 deletions src/server/api/endpoints/notes/hybrid-timeline.ts
@@ -1,8 +1,6 @@
import $ from 'cafy';
import ID, { transform } from '../../../../misc/cafy-id';
import Note from '../../../../models/note';
import { getFriendIds } from '../../common/get-friends';
import { packMany } from '../../../../models/note';
import define from '../../define';
import fetchMeta from '../../../../misc/fetch-meta';
import activeUsersChart from '../../../../services/chart/active-users';
Expand All @@ -12,6 +10,7 @@ import UserList from '../../../../models/user-list';
import { concat } from '../../../../prelude/array';
import { isSelfHost } from '../../../../misc/convert-host';
import { getHideRenoteUserIds } from '../../common/get-hide-renote-users';
import { getPackedTimeline } from '../../common/get-timeline';

export const meta = {
desc: {
Expand Down Expand Up @@ -355,12 +354,7 @@ export default define(meta, async (ps, user) => {
}
//#endregion

const timeline = await Note.find(query, {
limit: ps.limit,
sort: sort
});

activeUsersChart.update(user);

return await packMany(timeline, user);
return await getPackedTimeline(user, query, sort, ps.limit!);
});
10 changes: 2 additions & 8 deletions src/server/api/endpoints/notes/local-timeline.ts
@@ -1,12 +1,11 @@
import $ from 'cafy';
import ID, { transform } from '../../../../misc/cafy-id';
import Note from '../../../../models/note';
import { packMany } from '../../../../models/note';
import define from '../../define';
import fetchMeta from '../../../../misc/fetch-meta';
import activeUsersChart from '../../../../services/chart/active-users';
import { getHideUserIds } from '../../common/get-hide-users';
import { ApiError } from '../../error';
import { getPackedTimeline } from '../../common/get-timeline';

export const meta = {
desc: {
Expand Down Expand Up @@ -187,14 +186,9 @@ export default define(meta, async (ps, user) => {
}
//#endregion

const timeline = await Note.find(query, {
limit: ps.limit,
sort: sort
});

if (user) {
activeUsersChart.update(user);
}

return await packMany(timeline, user);
return await getPackedTimeline(user, query, sort, ps.limit!);
});
10 changes: 2 additions & 8 deletions src/server/api/endpoints/notes/locao-timeline.ts
@@ -1,12 +1,11 @@
import $ from 'cafy';
import ID, { transform } from '../../../../misc/cafy-id';
import Note from '../../../../models/note';
import { packMany } from '../../../../models/note';
import define from '../../define';
import fetchMeta from '../../../../misc/fetch-meta';
import activeUsersChart from '../../../../services/chart/active-users';
import { getHideUserIds } from '../../common/get-hide-users';
import { ApiError } from '../../error';
import { getPackedTimeline } from '../../common/get-timeline';

export const meta = {
desc: {
Expand Down Expand Up @@ -189,14 +188,9 @@ export default define(meta, async (ps, user) => {
}
//#endregion

const timeline = await Note.find(query, {
limit: ps.limit,
sort: sort
});

if (user) {
activeUsersChart.update(user);
}

return await packMany(timeline, user);
return await getPackedTimeline(user, query, sort, ps.limit!);
});
12 changes: 2 additions & 10 deletions src/server/api/endpoints/notes/timeline.ts
@@ -1,8 +1,6 @@
import $ from 'cafy';
import ID, { transform } from '../../../../misc/cafy-id';
import Note from '../../../../models/note';
import { getFriendIds } from '../../common/get-friends';
import { packMany } from '../../../../models/note';
import define from '../../define';
import activeUsersChart from '../../../../services/chart/active-users';
import { getHideUserIds } from '../../common/get-hide-users';
Expand All @@ -11,6 +9,7 @@ import { concat } from '../../../../prelude/array';
import { isSelfHost } from '../../../../misc/convert-host';
import { getHideRenoteUserIds } from '../../common/get-hide-renote-users';
import { oidIncludes } from '../../../../prelude/oid';
import { getPackedTimeline } from '../../common/get-timeline';

export const meta = {
desc: {
Expand Down Expand Up @@ -344,14 +343,7 @@ export default define(meta, async (ps, user) => {
};
}
//#endregion

const timeline = await Note.find(query, {
maxTimeMS: 25000,
limit: ps.limit,
sort: sort
});

activeUsersChart.update(user);

return await packMany(timeline, user);
return await getPackedTimeline(user, query, sort, ps.limit!);
});
10 changes: 2 additions & 8 deletions src/server/api/endpoints/notes/user-list-timeline.ts
@@ -1,7 +1,5 @@
import $ from 'cafy';
import ID, { transform } from '../../../../misc/cafy-id';
import Note from '../../../../models/note';
import { packMany } from '../../../../models/note';
import UserList from '../../../../models/user-list';
import define from '../../define';
import { getFriendIds } from '../../common/get-friends';
Expand All @@ -11,6 +9,7 @@ import { isSelfHost } from '../../../../misc/convert-host';
import { getHideRenoteUserIds } from '../../common/get-hide-renote-users';
import { intersection } from 'lodash';
import { concat } from '../../../../prelude/array';
import { getPackedTimeline } from '../../common/get-timeline';

export const meta = {
desc: {
Expand Down Expand Up @@ -394,10 +393,5 @@ export default define(meta, async (ps, user) => {
}
//#endregion

const timeline = await Note.find(query, {
limit: ps.limit,
sort: sort
});

return await packMany(timeline, user);
return await getPackedTimeline(user, query, sort, ps.limit!);
});

0 comments on commit c20f85e

Please sign in to comment.