|
@@ -67,8 +67,8 @@ import { File } from '@/server/modules/files/file.entity';
|
|
|
| 类型 | 命名格式 | 示例 |
|
|
| 类型 | 命名格式 | 示例 |
|
|
|
|------|----------|------|
|
|
|------|----------|------|
|
|
|
| 数据库字段 | `{前缀}_file_id` | `avatar_file_id` |
|
|
| 数据库字段 | `{前缀}_file_id` | `avatar_file_id` |
|
|
|
-| 实体字段 | `{前缀}FileId` | `avatarFileId` |
|
|
|
|
|
-| 关联实体 | `{前缀}File` | `avatarFile` |
|
|
|
|
|
|
|
+| 实体字段 | `{前缀}FileId` | `fileId` |
|
|
|
|
|
+| 关联实体 | `{前缀}File` | `file` |
|
|
|
| 描述注释 | `{描述}文件ID` | `头像文件ID` |
|
|
| 描述注释 | `{描述}文件ID` | `头像文件ID` |
|
|
|
|
|
|
|
|
### 4. 完整示例 - 基于用户实体
|
|
### 4. 完整示例 - 基于用户实体
|
|
@@ -76,20 +76,20 @@ import { File } from '@/server/modules/files/file.entity';
|
|
|
**实体类** ([`src/server/modules/users/user.entity.ts`](src/server/modules/users/user.entity.ts:29-34)):
|
|
**实体类** ([`src/server/modules/users/user.entity.ts`](src/server/modules/users/user.entity.ts:29-34)):
|
|
|
```typescript
|
|
```typescript
|
|
|
@Column({ name: 'avatar_file_id', type: 'int', unsigned: true, nullable: true, comment: '头像文件ID' })
|
|
@Column({ name: 'avatar_file_id', type: 'int', unsigned: true, nullable: true, comment: '头像文件ID' })
|
|
|
-avatarFileId!: number | null;
|
|
|
|
|
|
|
+fileId!: number | null;
|
|
|
|
|
|
|
|
@ManyToOne(() => File, { nullable: true })
|
|
@ManyToOne(() => File, { nullable: true })
|
|
|
@JoinColumn({ name: 'avatar_file_id', referencedColumnName: 'id' })
|
|
@JoinColumn({ name: 'avatar_file_id', referencedColumnName: 'id' })
|
|
|
-avatarFile!: File | null;
|
|
|
|
|
|
|
+file!: File | null;
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
**Schema定义** ([`src/server/modules/users/user.schema.ts`](src/server/modules/users/user.schema.ts:33-45)):
|
|
**Schema定义** ([`src/server/modules/users/user.schema.ts`](src/server/modules/users/user.schema.ts:33-45)):
|
|
|
```typescript
|
|
```typescript
|
|
|
-avatarFileId: z.number().int().positive().nullable().openapi({
|
|
|
|
|
|
|
+fileId: z.number().int().positive().nullable().openapi({
|
|
|
example: 1,
|
|
example: 1,
|
|
|
description: '头像文件ID'
|
|
description: '头像文件ID'
|
|
|
}),
|
|
}),
|
|
|
-avatarFile: z.object({
|
|
|
|
|
|
|
+file: z.object({
|
|
|
id: z.number().int().positive().openapi({ description: '文件ID' }),
|
|
id: z.number().int().positive().openapi({ description: '文件ID' }),
|
|
|
name: z.string().max(255).openapi({ description: '文件名', example: 'avatar.jpg' }),
|
|
name: z.string().max(255).openapi({ description: '文件名', example: 'avatar.jpg' }),
|
|
|
fullUrl: z.string().openapi({ description: '文件完整URL', example: 'https://example.com/avatar.jpg' }),
|
|
fullUrl: z.string().openapi({ description: '文件完整URL', example: 'https://example.com/avatar.jpg' }),
|