Skip to content
80 changes: 80 additions & 0 deletions src/api/Myplace/myPlace.api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import api from '@/api/api';
import type { ApiResponse } from '@/types/api-response';

export interface SavePlaceRequest {
contentId: string;
regionName: string;
themeName: string;
cnctrLevel: number;
placeName: string;
}

export interface SaveToggleResponse {
placeId: number;
type: 'LIKE' | 'SAVE';
enabled: boolean;
changed: boolean;
likeCount: number;
message: string;
createdAt: string;
updatedAt: string;
}

export interface SaveStatusData {
contentId: string;
save: boolean;
}

export interface SavedPlaceItem {
cnctrLevel: number;
contentId: string;
placeName: string;
likeCount: number;
themeName: string;
savedAt: string;
}
export interface SavedPlacePage {
content: SavedPlaceItem[];
page: number;
size: number;
totalElements: number;
totalPages: number;
first: boolean;
last: boolean;
hasNext: boolean;
hasPrevious: boolean;
}

//저장 ON
export async function savePlace(payload: SavePlaceRequest): Promise<SaveToggleResponse> {
const res = await api.put<SaveToggleResponse>('/my/places/save', payload);
return res.data;
}

//저장 OFF
export async function unsavePlace(payload: {
contentId: string;
regionName?: string;
themeName?: string;
cnctrLevel?: number;
}) {
const res = await api.delete<SaveToggleResponse>('/my/places/save', {
data: payload,
headers: { 'Content-Type': 'application/json' },
});
return res.data;
}

//저장 여부
export async function getSaveStatus(contentId: string): Promise<boolean> {
const res = await api.get<ApiResponse<SaveStatusData>>('/my/places/save/status', {
params: { contentId },
});
return !!res.data?.data?.save;
}

//내 저장 목록
export async function getSavedPlaces(page = 0, size = 20): Promise<SavedPlacePage> {
const res = await api.get<SavedPlacePage>('/my/places', { params: { page, size } });
return res.data;
}
22 changes: 0 additions & 22 deletions src/api/Myplace/saved.api.ts

This file was deleted.

22 changes: 0 additions & 22 deletions src/api/Myplace/saved.ts

This file was deleted.

34 changes: 0 additions & 34 deletions src/api/Myplace/saveg.api.ts

This file was deleted.

34 changes: 0 additions & 34 deletions src/api/Myplace/saveg.ts

This file was deleted.

77 changes: 0 additions & 77 deletions src/api/Myplace/savep.api.ts

This file was deleted.

77 changes: 0 additions & 77 deletions src/api/Myplace/savep.ts

This file was deleted.

22 changes: 22 additions & 0 deletions src/api/Selector/region.api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import api from '@/api/api';

export interface SigunguDto {
sigunguCode: string;
sigunguName: string;
}
export interface AreaDto {
areaCode: string;
areaName: string;
sigunguList: SigunguDto[];
}

function unwrap<T>(raw: any): T {
return raw && typeof raw.success === 'boolean' && 'data' in raw ? raw.data : raw;
}

export async function fetchRegions(): Promise<AreaDto[]> {
const res = await api.get('/places/regions');
const data = unwrap<AreaDto[]>(res.data);
if (!Array.isArray(data)) throw new Error('Unexpected response for /places/regions');
return data;
}
Loading