import { BlogCategory, BlogListParams, BlogPost, BlogPostAndCategoriesDto, CreateUpdateBlogCategoryDto, CreateUpdateBlogPostDto, } from '@/proxy/blog/blog' import apiService from '@/services/api.service' class BlogService { async getPosts(params: BlogListParams = {}): Promise { const response = await apiService.fetchData({ url: '/api/app/public/post-list', method: 'GET', params, }) return response.data } async getPostBySlug(slug: string): Promise { const response = await apiService.fetchData({ url: `/api/app/public/post-by-slug?slug=${slug}`, method: 'GET', }) return response.data } async createPost(data: CreateUpdateBlogPostDto): Promise { const response = await apiService.fetchData({ url: '/api/app/blog/post', method: 'POST', data: data as any, }) return response.data } async updatePost(id: string, data: CreateUpdateBlogPostDto): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/post`, method: 'PUT', data: data as any, }) return response.data } async deletePost(id: string): Promise { await apiService.fetchData({ url: `/api/app/blog/${id}/post`, method: 'DELETE', }) } async publishPost(id: string): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/publish-post`, method: 'POST', }) return response.data } async unpublishPost(id: string): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/unpublish-post`, method: 'POST', }) return response.data } async deleteComment(id: string): Promise { await apiService.fetchData({ url: `/api/app/blog/comments/${id}`, method: 'DELETE', }) } async likePost(postId: string): Promise { await apiService.fetchData({ url: `/api/app/blog/${postId}/like-post`, method: 'POST', }) } async unlikePost(postId: string): Promise { await apiService.fetchData({ url: `/api/app/blog/${postId}/unlike-post`, method: 'DELETE', }) } async likeComment(commentId: string): Promise { await apiService.fetchData({ url: `/api/app/blog/comments/${commentId}/like`, method: 'POST', }) } async unlikeComment(commentId: string): Promise { await apiService.fetchData({ url: `/api/app/blog/comments/${commentId}/like`, method: 'DELETE', }) } async getTags(): Promise { const response = await apiService.fetchData({ url: '/api/app/blog/tags', method: 'GET', }) return response.data } // Category methods async getCategory(id: string): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/category`, method: 'GET', }) return response.data } async createCategory(data: CreateUpdateBlogCategoryDto): Promise { const response = await apiService.fetchData({ url: '/api/app/blog/category', method: 'POST', data: data as any, }) return response.data } async updateCategory(id: string, data: CreateUpdateBlogCategoryDto): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/category`, method: 'PUT', data: data as any, }) return response.data } async deleteCategory(id: string): Promise { await apiService.fetchData({ url: `/api/app/blog/${id}/category`, method: 'DELETE', }) } } export const blogService = new BlogService()