erp-platform/ui/src/services/blog.service.ts

158 lines
4.2 KiB
TypeScript
Raw Normal View History

2025-06-23 21:22:11 +00:00
import { BlogCategory, BlogListParams, BlogPost, CreateUpdateBlogCategoryDto, CreateUpdateBlogPostDto, PaginatedResponse } from '@/proxy/blog/blog';
2025-06-19 21:42:16 +00:00
import apiService from '@/services/api.service'
2025-06-19 14:51:10 +00:00
class BlogService {
async getPosts(params: BlogListParams = {}): Promise<PaginatedResponse<BlogPost>> {
const response = await apiService.fetchData<PaginatedResponse<BlogPost>>({
url: '/api/app/blog/posts',
method: 'GET',
2025-06-19 21:42:16 +00:00
params,
})
return response.data
}
async getPostBySlug(slug: string): Promise<BlogPost> {
const response = await apiService.fetchData<BlogPost>({
2025-08-11 06:34:44 +00:00
url : `/api/app/blog/post-by-slug?slug=${slug}`,
2025-06-19 21:42:16 +00:00
method: 'GET',
})
2025-06-19 14:51:10 +00:00
return response.data;
}
async getPost(idOrSlug: string): Promise<BlogPost> {
const response = await apiService.fetchData<BlogPost>({
url: `/api/app/blog/posts/${idOrSlug}`,
2025-06-19 21:42:16 +00:00
method: 'GET',
})
return response.data
2025-06-19 14:51:10 +00:00
}
async createPost(data: CreateUpdateBlogPostDto): Promise<BlogPost> {
const response = await apiService.fetchData<BlogPost>({
2025-06-19 21:42:16 +00:00
url: '/api/app/blog/post',
2025-06-19 14:51:10 +00:00
method: 'POST',
2025-06-19 21:42:16 +00:00
data: data as any,
})
return response.data
2025-06-19 14:51:10 +00:00
}
async updatePost(id: string, data: CreateUpdateBlogPostDto): Promise<BlogPost> {
const response = await apiService.fetchData<BlogPost>({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${id}/post`,
2025-06-19 14:51:10 +00:00
method: 'PUT',
2025-06-19 21:42:16 +00:00
data: data as any,
})
return response.data
2025-06-19 14:51:10 +00:00
}
async deletePost(id: string): Promise<void> {
await apiService.fetchData({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${id}/post`,
method: 'DELETE',
})
2025-06-19 14:51:10 +00:00
}
async publishPost(id: string): Promise<BlogPost> {
const response = await apiService.fetchData<BlogPost>({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${id}/publish-post`,
method: 'POST',
})
return response.data
2025-06-19 14:51:10 +00:00
}
async unpublishPost(id: string): Promise<BlogPost> {
const response = await apiService.fetchData<BlogPost>({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${id}/unpublish-post`,
method: 'POST',
})
return response.data
2025-06-19 14:51:10 +00:00
}
async getCategories(): Promise<BlogCategory[]> {
const response = await apiService.fetchData<BlogCategory[]>({
url: '/api/app/blog/categories',
2025-06-19 21:42:16 +00:00
method: 'GET',
})
return response.data
2025-06-19 14:51:10 +00:00
}
async deleteComment(id: string): Promise<void> {
await apiService.fetchData({
url: `/api/app/blog/comments/${id}`,
2025-06-19 21:42:16 +00:00
method: 'DELETE',
})
2025-06-19 14:51:10 +00:00
}
async likePost(postId: string): Promise<void> {
await apiService.fetchData({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${postId}/like-post`,
method: 'POST',
})
2025-06-19 14:51:10 +00:00
}
async unlikePost(postId: string): Promise<void> {
await apiService.fetchData({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${postId}/unlike-post`,
method: 'DELETE',
})
2025-06-19 14:51:10 +00:00
}
async likeComment(commentId: string): Promise<void> {
await apiService.fetchData({
url: `/api/app/blog/comments/${commentId}/like`,
2025-06-19 21:42:16 +00:00
method: 'POST',
})
2025-06-19 14:51:10 +00:00
}
async unlikeComment(commentId: string): Promise<void> {
await apiService.fetchData({
url: `/api/app/blog/comments/${commentId}/like`,
2025-06-19 21:42:16 +00:00
method: 'DELETE',
})
2025-06-19 14:51:10 +00:00
}
async getTags(): Promise<string[]> {
const response = await apiService.fetchData<string[]>({
url: '/api/app/blog/tags',
2025-06-19 21:42:16 +00:00
method: 'GET',
})
return response.data
2025-06-19 14:51:10 +00:00
}
// Category methods
async getCategory(id: string): Promise<BlogCategory> {
const response = await apiService.fetchData<BlogCategory>({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${id}/category`,
method: 'GET',
})
return response.data
2025-06-19 14:51:10 +00:00
}
async createCategory(data: CreateUpdateBlogCategoryDto): Promise<BlogCategory> {
const response = await apiService.fetchData<BlogCategory>({
2025-06-19 21:42:16 +00:00
url: '/api/app/blog/category',
2025-06-19 14:51:10 +00:00
method: 'POST',
2025-06-19 21:42:16 +00:00
data: data as any,
})
return response.data
2025-06-19 14:51:10 +00:00
}
async updateCategory(id: string, data: CreateUpdateBlogCategoryDto): Promise<BlogCategory> {
const response = await apiService.fetchData<BlogCategory>({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${id}/category`,
2025-06-19 14:51:10 +00:00
method: 'PUT',
2025-06-19 21:42:16 +00:00
data: data as any,
})
return response.data
2025-06-19 14:51:10 +00:00
}
async deleteCategory(id: string): Promise<void> {
await apiService.fetchData({
2025-06-19 21:42:16 +00:00
url: `/api/app/blog/${id}/category`,
method: 'DELETE',
})
2025-06-19 14:51:10 +00:00
}
}
2025-06-19 21:42:16 +00:00
export const blogService = new BlogService()