mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 20:13:49 +00:00
Feat: add user header with follow info
This commit is contained in:
27
src/services/UserFollows/getUsersFollowedByUser.ts
Normal file
27
src/services/UserFollows/getUsersFollowedByUser.ts
Normal 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;
|
||||
27
src/services/UserFollows/getUsersFollowingUser.ts
Normal file
27
src/services/UserFollows/getUsersFollowingUser.ts
Normal 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;
|
||||
9
src/services/UserFollows/schema/FollowInfoSchema.ts
Normal file
9
src/services/UserFollows/schema/FollowInfoSchema.ts
Normal 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;
|
||||
Reference in New Issue
Block a user