45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import type {User} from '../user/base';
|
||
import type {PostType} from './enum';
|
||
|
||
// 基础实体接口
|
||
export interface BaseEntity {
|
||
id: string; // 唯一标识符
|
||
createdAt: Date; // 创建时间
|
||
updatedAt: Date; // 更新时间
|
||
}
|
||
|
||
// 用户基础信息接口
|
||
export interface BaseUser {
|
||
// 其实应该用profile的
|
||
user: User;
|
||
}
|
||
|
||
export interface PostComment extends BaseEntity {
|
||
// 这里没带postId,如果后台管理需要,就要带
|
||
// 重复了,而且评论没有数据(点赞、收藏等等)
|
||
authorId: string; // 作者ID
|
||
author: BaseUser; // 作者信息
|
||
content: string; // 评论内容
|
||
parentId?: string; // 父评论ID,用于嵌套评论
|
||
}
|
||
|
||
// 实体内容和统计信息基础接口
|
||
export interface BaseEntityContent {
|
||
title?: string; // 标题
|
||
excerpt: string; // 摘要
|
||
tags?: string[]; // 标签数组
|
||
metadata?: Record<string, unknown>; // 元数据
|
||
stars: number; // 收藏数
|
||
likes: number; // 点赞数
|
||
comments: number; // 评论数
|
||
}
|
||
|
||
// 帖子接口
|
||
export interface Post extends BaseEntity, BaseEntityContent {
|
||
type: PostType; // 帖子类型:提问或文章
|
||
authorId: string; // 作者ID
|
||
author: BaseUser; // 作者信息
|
||
images?: string[]; // 图片数组
|
||
publishedAt?: Date; // 发布时间
|
||
}
|