|
|
@@ -1,4 +1,8 @@
|
|
|
-import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';
|
|
|
+import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, OneToMany } from 'typeorm';
|
|
|
+import { UserEntity } from '../users/user.entity';
|
|
|
+import { SilverKnowledgeCategory } from './silver-knowledge-category.entity';
|
|
|
+import { SilverKnowledgeInteraction } from './silver-knowledge-interaction.entity';
|
|
|
+import { SilverKnowledgeTagRelation } from './silver-knowledge-tag-relation.entity';
|
|
|
import { z } from '@hono/zod-openapi';
|
|
|
|
|
|
export enum KnowledgeType {
|
|
|
@@ -27,9 +31,17 @@ export class SilverKnowledge {
|
|
|
@Column({ name: 'user_id', type: 'int', unsigned: true })
|
|
|
userId!: number;
|
|
|
|
|
|
+ @ManyToOne(() => UserEntity, user => user.silverKnowledges)
|
|
|
+ @JoinColumn({ name: 'user_id' })
|
|
|
+ user!: UserEntity;
|
|
|
+
|
|
|
@Column({ name: 'category_id', type: 'int', unsigned: true, nullable: true })
|
|
|
categoryId!: number | null;
|
|
|
|
|
|
+ @ManyToOne(() => SilverKnowledgeCategory, category => category.silverKnowledges)
|
|
|
+ @JoinColumn({ name: 'category_id' })
|
|
|
+ category!: SilverKnowledgeCategory | null;
|
|
|
+
|
|
|
@Column({ name: 'title', type: 'varchar', length: 255 })
|
|
|
title!: string;
|
|
|
|
|
|
@@ -115,6 +127,12 @@ export class SilverKnowledge {
|
|
|
|
|
|
@Column({ name: 'updated_by', type: 'int', nullable: true })
|
|
|
updatedBy!: number | null;
|
|
|
+
|
|
|
+ @OneToMany(() => SilverKnowledgeInteraction, interaction => interaction.knowledge)
|
|
|
+ silverKnowledgeInteractions!: SilverKnowledgeInteraction[];
|
|
|
+
|
|
|
+ @OneToMany(() => SilverKnowledgeTagRelation, tagRelation => tagRelation.knowledge)
|
|
|
+ silverKnowledgeTagRelations!: SilverKnowledgeTagRelation[];
|
|
|
}
|
|
|
|
|
|
// Zod Schema定义
|
|
|
@@ -127,10 +145,25 @@ export const SilverKnowledgeSchema = z.object({
|
|
|
description: '发布用户ID',
|
|
|
example: 1
|
|
|
}),
|
|
|
+ user: UserSchema.optional().openapi({
|
|
|
+ description: '发布用户',
|
|
|
+ example: {
|
|
|
+ id: 1,
|
|
|
+ username: 'user123',
|
|
|
+ nickname: '张三'
|
|
|
+ }
|
|
|
+ }),
|
|
|
categoryId: z.number().int().positive().optional().nullable().openapi({
|
|
|
description: '分类ID',
|
|
|
example: 5
|
|
|
}),
|
|
|
+ category: SilverKnowledgeCategorySchema.optional().nullable().openapi({
|
|
|
+ description: '知识分类',
|
|
|
+ example: {
|
|
|
+ id: 5,
|
|
|
+ name: '健康养生'
|
|
|
+ }
|
|
|
+ }),
|
|
|
title: z.string().max(255).openapi({
|
|
|
description: '知识标题',
|
|
|
example: '老年人健康饮食指南'
|