From 1f8d4dc413b7245b7dceced443e3e05d710a8263 Mon Sep 17 00:00:00 2001 From: liuyi Date: Sun, 22 Jun 2025 08:59:23 +0800 Subject: [PATCH] add user module --- src/modules/content/entities/comment.entity.ts | 11 +++++++++-- src/modules/content/entities/post.entity.ts | 11 +++++++++-- src/modules/user/entities/UserEntity.ts | 16 ++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/modules/content/entities/comment.entity.ts b/src/modules/content/entities/comment.entity.ts index d2992ea..394ad37 100644 --- a/src/modules/content/entities/comment.entity.ts +++ b/src/modules/content/entities/comment.entity.ts @@ -1,4 +1,5 @@ import { Exclude, Expose, Type } from 'class-transformer'; +import type { Relation } from 'typeorm'; import { BaseEntity, Column, @@ -11,9 +12,8 @@ import { TreeParent, } from 'typeorm'; -import type { Relation } from 'typeorm'; - import { PostEntity } from '@/modules/content/entities/post.entity'; +import { UserEntity } from '@/modules/user/entities/UserEntity'; @Exclude() @Entity('content_comment') @@ -50,4 +50,11 @@ export class CommentEntity extends BaseEntity { @Expose({ groups: ['comment-tree'] }) @TreeChildren({ cascade: true }) children: Relation[]; + + @ManyToOne(() => UserEntity, (user) => user.comments, { + nullable: false, + onDelete: 'CASCADE', + onUpdate: 'CASCADE', + }) + author: Relation; } diff --git a/src/modules/content/entities/post.entity.ts b/src/modules/content/entities/post.entity.ts index 2a34905..770e5ef 100644 --- a/src/modules/content/entities/post.entity.ts +++ b/src/modules/content/entities/post.entity.ts @@ -1,4 +1,5 @@ import { Exclude, Expose, Type } from 'class-transformer'; +import type { Relation } from 'typeorm'; import { BaseEntity, Column, @@ -13,12 +14,11 @@ import { UpdateDateColumn, } from 'typeorm'; -import type { Relation } from 'typeorm'; - import { PostBodyType } from '@/modules/content/constants'; import { CategoryEntity } from '@/modules/content/entities/category.entity'; import { CommentEntity } from '@/modules/content/entities/comment.entity'; import { TagEntity } from '@/modules/content/entities/tag.entity'; +import { UserEntity } from '@/modules/user/entities/UserEntity'; @Exclude() @Entity('content_posts') @@ -89,4 +89,11 @@ export class PostEntity extends BaseEntity { @OneToMany(() => CommentEntity, (comment) => comment.post, { cascade: true }) comments: Relation[]; + + @ManyToOne(() => UserEntity, (user) => user.posts, { + nullable: false, + onDelete: 'CASCADE', + onUpdate: 'CASCADE', + }) + author: Relation; } diff --git a/src/modules/user/entities/UserEntity.ts b/src/modules/user/entities/UserEntity.ts index 11a35d1..03377f1 100644 --- a/src/modules/user/entities/UserEntity.ts +++ b/src/modules/user/entities/UserEntity.ts @@ -4,10 +4,14 @@ import { CreateDateColumn, DeleteDateColumn, Entity, + OneToMany, PrimaryColumn, + Relation, UpdateDateColumn, } from 'typeorm'; +import { CommentEntity, PostEntity } from '@/modules/content/entities'; + /** * 用户实体 */ @@ -78,4 +82,16 @@ export class UserEntity { @Type(() => Date) @DeleteDateColumn({ comment: '用户销户时间' }) deletedAt?: Date; + + /** + * 用户发表文章 + */ + @OneToMany(() => PostEntity, (post) => post.author, { cascade: true }) + posts: Relation[]; + + /** + * 用户发表评论 + */ + @OneToMany(() => CommentEntity, (comment) => comment.author, { cascade: true }) + comments: Relation[]; }