kt-template-online-api/src/qqbot/rule/qqbot-rule.entity.ts

69 lines
1.4 KiB
TypeScript

import {
BeforeInsert,
Column,
CreateDateColumn,
Entity,
PrimaryColumn,
UpdateDateColumn,
} from 'typeorm';
import { ensureSnowflakeId, FormatDateTime } from '@/common';
import type { QqbotRuleMatchType, QqbotRuleTargetType } from '../qqbot.types';
@Entity('qqbot_rule')
export class QqbotRule {
@PrimaryColumn({ type: 'bigint' })
id: string;
@Column({ default: '', length: 120 })
name: string;
@Column({ default: 'keyword', length: 32, name: 'match_type' })
matchType: QqbotRuleMatchType;
@Column({ length: 500 })
keyword: string;
@Column({ length: 32, name: 'target_type', default: 'all' })
targetType: QqbotRuleTargetType;
@Column({ name: 'reply_content', type: 'text' })
replyContent: string;
@Column({ default: true })
enabled: boolean;
@Column({ default: 0 })
priority: number;
@Column({ default: 1500, name: 'cooldown_ms' })
cooldownMs: number;
@Column({
default: null,
name: 'last_hit_at',
nullable: true,
type: 'datetime',
})
@FormatDateTime()
lastHitAt: Date | null;
@Column({ default: '', length: 255 })
remark: string;
@Column({ default: false, name: 'is_deleted' })
isDeleted: boolean;
@CreateDateColumn({ name: 'create_time' })
@FormatDateTime()
createTime: Date;
@UpdateDateColumn({ name: 'update_time' })
@FormatDateTime()
updateTime: Date;
@BeforeInsert()
createId() {
ensureSnowflakeId(this);
}
}