Skip to content

Commit a8cfb41

Browse files
committed
feat: 사이드바 그룹 리스트 및 프로파일 관련 api 작성
1 parent 1cf09dd commit a8cfb41

File tree

7 files changed

+298
-214
lines changed

7 files changed

+298
-214
lines changed

src/apis/getAllGroupByUserIdApi.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import supabase from '@/supabase';
2+
3+
export const getAllGroupByUserIdFetch = async (userId: string) => {
4+
const { data, error } = await supabase.from('group_user_ralations').select('*').eq('user_id', userId);
5+
if (error) {
6+
throw error;
7+
}
8+
const { data: groupData, error: groupError } = await supabase
9+
.from('groups')
10+
.select('*')
11+
.in(
12+
'id',
13+
data.map((d) => d.group_id),
14+
);
15+
16+
if (groupError) {
17+
throw groupError;
18+
}
19+
20+
return groupData;
21+
};

src/apis/getUserApi.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import supabase from '@/supabase';
2+
3+
export const getUserFetch = async () => {
4+
const { data: session, error: sessionError } = await supabase.auth.getUser();
5+
6+
if (!session || sessionError) {
7+
throw sessionError;
8+
}
9+
10+
const { data, error } = await supabase.from('profiles').select('*').eq('id', session.user.id).single();
11+
12+
if (error) {
13+
throw error;
14+
}
15+
16+
return data;
17+
};

src/apis/groupScheduleApis.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ interface addGroupShedule {
1010
}
1111

1212
export const addGroupScheduleFetch = async ({ startDate, endDate, newMemberList, ...props }: addGroupShedule) => {
13+
// 현재 로그인된 사용자를 가져온다.
14+
const { data: user, error: userError } = await supabase.auth.getUser();
15+
16+
if (userError) {
17+
throw userError;
18+
}
19+
1320
// 그룹을 생성한다.
1421
const { data: groupInfo, error: groupInfoError } = await supabase
1522
.from('groups')
@@ -27,12 +34,15 @@ export const addGroupScheduleFetch = async ({ startDate, endDate, newMemberList,
2734
}
2835

2936
// 그룹에 멤버를 추가한다.
30-
const { error: groupMemberError } = await supabase.from('group_user_ralations').insert(
31-
newMemberList.map((member) => ({
32-
group_id: groupInfo.id,
33-
user_id: member.id,
34-
})),
35-
);
37+
const newRelationSchema = newMemberList.map((member) => ({
38+
group_id: groupInfo.id,
39+
user_id: member.id,
40+
}));
41+
newRelationSchema.push({
42+
group_id: groupInfo.id,
43+
user_id: user.user.id,
44+
});
45+
const { error: groupMemberError } = await supabase.from('group_user_ralations').insert(newRelationSchema);
3646
if (groupMemberError) {
3747
throw groupMemberError;
3848
}

src/react-queries/queryKeys.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { createQueryKeyStore } from '@lukemorales/query-key-factory';
33
export const queries = createQueryKeyStore({
44
auth: {
55
isLogin: null,
6+
profile: null,
67
},
78
session: {
89
getSession: null,
@@ -19,5 +20,6 @@ export const queries = createQueryKeyStore({
1920
updateMember: null,
2021
getAllMember: (groupId: string) => [groupId],
2122
add: null,
23+
getAllByUserId: (userId: string) => [userId],
2224
},
2325
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { useQuery } from '@tanstack/react-query';
2+
import { queries } from './queryKeys';
3+
import { getAllGroupByUserIdFetch } from '@/apis/getAllGroupByUserIdApi';
4+
5+
export const useGetAllGroupByUserId = (userId: string) =>
6+
useQuery({
7+
queryKey: queries.group.getAllByUserId(userId).queryKey,
8+
queryFn: () => getAllGroupByUserIdFetch(userId),
9+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { getUserFetch } from '@/apis/getUserApi';
2+
import { useQuery } from '@tanstack/react-query';
3+
import { queries } from './queryKeys';
4+
5+
export const useGetProfile = () =>
6+
useQuery({
7+
queryKey: queries.auth.profile.queryKey,
8+
queryFn: getUserFetch,
9+
});

0 commit comments

Comments
 (0)