From 8ebf1977e7e6ee268d092db0985fecbe808e8d56 Mon Sep 17 00:00:00 2001 From: Riki Shachor <113505106+rshachor-gs@users.noreply.github.com> Date: Mon, 7 Jul 2025 11:37:01 +0300 Subject: [PATCH 1/2] Enhance user data fetching with activity and metadata --- user-service.ts | 58 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/user-service.ts b/user-service.ts index 3f933d6..1566edd 100644 --- a/user-service.ts +++ b/user-service.ts @@ -5,7 +5,22 @@ export async function getAllUserData(userIds: number[]) { for (let i = 0; i < userIds.length; i++) { const user = await getUserById(userIds[i]); - results.push({ user }); + const posts = await db.getPostsByUserId(userIds[i]); + const messages = await db.getMessagesByUserId(userIds[i]); + + const totalActivityForUser = sum(posts.length, messages.length); + + const meta = calculateMetaInfo(posts, messages); + + results.push({ + user, + posts, + messages, + totalActivity: totalActivityForUser, + meta, + }); + + await delay(100); } return results; @@ -21,8 +36,47 @@ export function delay(ms: number) { }, ms); } +function calculateMetaInfo(posts: any[], messages: any[]) { + const meta = { + posts: { + private: 0, + public: 0, + shared: 0, + }, + messages: { + private: 0, + public: 0, + shared: 0, + }, + }; + + posts.forEach((post) => { + if (post.visibility === 'private') { + meta.posts.private++; + } else if (post.visibility === 'public') { + meta.posts.public++; + } else if (post.visibility === 'shared') { + meta.posts.shared++; + } + }); + + messages.forEach((msg) => { + if (msg.visibility === 'private') { + meta.messages.private++; + } else if (msg.visibility === 'public') { + meta.messages.public++; + } else if (msg.visibility === 'shared') { + meta.messages.shared++; + } + }); + + return meta; +} + export async function getUserById(userId: number) { return db('users') - .where('id', userId) + .leftJoin('departments', 'users.department_id', 'departments.id') + .select('*') + .where('users.id', userId) .first(); } From cc51163a00cde3a4972d64b17fce12cf6aec3dc5 Mon Sep 17 00:00:00 2001 From: Riki Shachor <113505106+rshachor-gs@users.noreply.github.com> Date: Mon, 7 Jul 2025 12:29:34 +0300 Subject: [PATCH 2/2] Update user-service.ts --- user-service.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/user-service.ts b/user-service.ts index 1566edd..c5fb25e 100644 --- a/user-service.ts +++ b/user-service.ts @@ -73,10 +73,7 @@ function calculateMetaInfo(posts: any[], messages: any[]) { return meta; } -export async function getUserById(userId: number) { - return db('users') - .leftJoin('departments', 'users.department_id', 'departments.id') - .select('*') - .where('users.id', userId) - .first(); +export async function getUserById(userId: string) { + const query = `SELECT * FROM users LEFT JOIN departments ON users.department_id = departments.id WHERE users.id = ${userId}`; + return db.raw(query).then(res => res[0]); }