Feat: add user header with follow info

This commit is contained in:
Aaron William Po
2023-11-12 23:24:33 -05:00
parent b939219c67
commit fd1f2b101f
11 changed files with 379 additions and 38 deletions

View File

@@ -0,0 +1,27 @@
import DBClient from '@/prisma/DBClient';
import { z } from 'zod';
import FollowInfoSchema from './schema/FollowInfoSchema';
interface GetFollowingInfoByUserIdArgs {
userId: string;
pageNum: number;
pageSize: number;
}
const getUsersFollowedByUser = async ({
userId,
pageNum,
pageSize,
}: GetFollowingInfoByUserIdArgs): Promise<z.infer<typeof FollowInfoSchema>[]> => {
const usersFollowedByQueriedUser = await DBClient.instance.userFollow.findMany({
take: pageSize,
skip: (pageNum - 1) * pageSize,
where: { following: { id: userId } },
select: {
follower: { select: { username: true, userAvatar: true, id: true } },
},
});
return usersFollowedByQueriedUser.map((u) => u.follower);
};
export default getUsersFollowedByUser;

View File

@@ -0,0 +1,27 @@
import DBClient from '@/prisma/DBClient';
import { z } from 'zod';
import FollowInfoSchema from './schema/FollowInfoSchema';
interface GetFollowingInfoByUserIdArgs {
userId: string;
pageNum: number;
pageSize: number;
}
const getUsersFollowingUser = async ({
userId,
pageNum,
pageSize,
}: GetFollowingInfoByUserIdArgs): Promise<z.infer<typeof FollowInfoSchema>[]> => {
const usersFollowingQueriedUser = await DBClient.instance.userFollow.findMany({
take: pageSize,
skip: (pageNum - 1) * pageSize,
where: { follower: { id: userId } },
select: {
following: { select: { username: true, userAvatar: true, id: true } },
},
});
return usersFollowingQueriedUser.map((u) => u.following);
};
export default getUsersFollowingUser;

View File

@@ -0,0 +1,9 @@
import GetUserSchema from '@/services/User/schema/GetUserSchema';
const FollowInfoSchema = GetUserSchema.pick({
userAvatar: true,
id: true,
username: true,
});
export default FollowInfoSchema;