forked from UKSOURCE/hailearning.edu.vn
137 lines
2.4 KiB
TypeScript
137 lines
2.4 KiB
TypeScript
/**
|
|
* Blog Types
|
|
* Định nghĩa các interface cho Blog system
|
|
*/
|
|
|
|
export interface BlogCategory {
|
|
_id?: string;
|
|
name: string;
|
|
slug: string;
|
|
description?: string;
|
|
postCount?: number;
|
|
isActive?: boolean;
|
|
createdAt?: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface BlogTag {
|
|
_id?: string;
|
|
name: string;
|
|
slug: string;
|
|
postCount?: number;
|
|
isActive?: boolean;
|
|
createdAt?: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface BlogComment {
|
|
_id?: string;
|
|
postId?: string;
|
|
authorName: string;
|
|
authorAvatar?: string;
|
|
content: string;
|
|
createdAt: string;
|
|
status?: 'pending' | 'approved' | 'rejected';
|
|
parentId?: string;
|
|
parentAuthorName?: string | null;
|
|
}
|
|
|
|
export interface BlogPost {
|
|
_id?: string;
|
|
title: string;
|
|
slug: string;
|
|
excerpt: string;
|
|
content: string;
|
|
category: string[];
|
|
tags: string[];
|
|
author: string;
|
|
status: 'draft' | 'published';
|
|
publishedAt: string;
|
|
isFeatured: boolean;
|
|
featuredImage: string;
|
|
galleryImages?: string[];
|
|
quote?: string;
|
|
contentAfterQuote?: string;
|
|
commentsCount: number;
|
|
comments?: BlogComment[];
|
|
createdAt?: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface RecentPost {
|
|
_id?: string;
|
|
title: string;
|
|
slug: string;
|
|
thumbnail: string;
|
|
publishedAt: string;
|
|
originalPostId?: string;
|
|
createdAt?: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface BlogPagination {
|
|
current: number;
|
|
total: number;
|
|
limit: number;
|
|
totalItems: number;
|
|
}
|
|
|
|
export interface BlogListResponse {
|
|
success: boolean;
|
|
message: string;
|
|
data: {
|
|
blogs: BlogPost[];
|
|
pagination: BlogPagination;
|
|
};
|
|
}
|
|
|
|
export interface BlogDetailResponse {
|
|
success: boolean;
|
|
message: string;
|
|
data: BlogPost;
|
|
}
|
|
|
|
export interface BlogFeaturedResponse {
|
|
success: boolean;
|
|
message: string;
|
|
data: BlogPost[];
|
|
}
|
|
|
|
export interface BlogRecentResponse {
|
|
success: boolean;
|
|
message: string;
|
|
data: RecentPost[];
|
|
}
|
|
|
|
export interface CategoryListResponse {
|
|
success: boolean;
|
|
message: string;
|
|
data: BlogCategory[];
|
|
}
|
|
|
|
export interface CategoryDetailResponse {
|
|
success: boolean;
|
|
message: string;
|
|
data: BlogCategory;
|
|
}
|
|
|
|
export interface TagListResponse {
|
|
success: boolean;
|
|
message: string;
|
|
data: BlogTag[];
|
|
}
|
|
|
|
export interface TagDetailResponse {
|
|
success: boolean;
|
|
message: string;
|
|
data: BlogTag;
|
|
}
|
|
|
|
export interface BlogQueryParams {
|
|
page?: number;
|
|
limit?: number;
|
|
category?: string;
|
|
tag?: string;
|
|
search?: string;
|
|
}
|