import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, Index, } from 'typeorm'; import { ApiProperty } from '@nestjs/swagger'; import { TgAccount } from './tg-account.entity'; import { Group } from './group.entity'; @Entity('message') @Index(['senderId', 'createdAt']) @Index(['groupId', 'createdAt']) export class Message { @ApiProperty({ description: '消息ID' }) @PrimaryGeneratedColumn() id: number; @ApiProperty({ description: '发送者ID' }) @Column({ nullable: true, comment: '发送者ID' }) senderId: number; @ApiProperty({ description: '群组ID' }) @Column({ nullable: true, comment: '群组ID' }) groupId: number; @ApiProperty({ description: '消息内容' }) @Column({ type: 'text', comment: '消息内容' }) content: string; @ApiProperty({ description: '消息类型' }) @Column({ default: 1, comment: '消息类型: 1文本 2图片 3视频 4文件' }) type: number; @ApiProperty({ description: 'Telegram消息ID' }) @Column({ nullable: true, comment: 'Telegram消息ID' }) telegramMessageId: string; @ApiProperty({ description: '回复消息ID' }) @Column({ nullable: true, comment: '回复消息ID' }) replyToMessageId: number; @ApiProperty({ description: '媒体文件信息' }) @Column({ type: 'json', nullable: true, comment: '媒体文件信息' }) media: any; @ApiProperty({ description: '状态' }) @Column({ default: 1, comment: '状态: 1正常 2删除' }) status: number; @ApiProperty({ description: '发送时间' }) @Column({ type: 'datetime', nullable: true, comment: '发送时间' }) sentAt: Date; @ManyToOne(() => TgAccount) @JoinColumn({ name: 'senderId' }) sender: TgAccount; @ManyToOne(() => Group) @JoinColumn({ name: 'groupId' }) group: Group; @ApiProperty({ description: '创建时间' }) @CreateDateColumn() createdAt: Date; @ApiProperty({ description: '更新时间' }) @UpdateDateColumn() updatedAt: Date; }