task.entity.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'
  2. export enum TaskType {
  3. SEND_MESSAGE = 'send_message',
  4. INVITE_TO_GROUP = 'invite_to_group'
  5. }
  6. export enum TaskStatus {
  7. PENDING = 'pending',
  8. SENDING = 'sending',
  9. QUEUING = 'queuing',
  10. PAUSED = 'paused',
  11. CANCELED = 'canceled',
  12. COMPLETED = 'completed'
  13. }
  14. @Entity()
  15. @Index('idx_task_status_delFlag_startedAt', ['status', 'delFlag', 'startedAt'])
  16. @Index('idx_task_userId_delFlag_createdAt', ['userId', 'delFlag', 'createdAt'])
  17. export class Task {
  18. @PrimaryGeneratedColumn()
  19. id: number
  20. @Column()
  21. name: string
  22. @Column()
  23. userId: number
  24. @Column({
  25. type: 'enum',
  26. enum: TaskType,
  27. default: TaskType.SEND_MESSAGE
  28. })
  29. type: TaskType
  30. /**
  31. * 任务配置
  32. * - SEND_MESSAGE: { message: string }
  33. * - INVITE_TO_GROUP: { inviteLink: string }
  34. */
  35. @Column({ type: 'simple-json', nullable: true })
  36. payload: Record<string, any> | null
  37. @Column({ default: 0 })
  38. processed: number
  39. @Column({ default: 0 })
  40. success: number
  41. @Column({ default: 0 })
  42. total: number
  43. @Column({
  44. type: 'enum',
  45. enum: TaskStatus,
  46. default: TaskStatus.PENDING
  47. })
  48. status: TaskStatus
  49. @Column({ default: false })
  50. cancelRequested: boolean
  51. @Column({ default: 5 })
  52. accountLimit: number
  53. @Column({ type: 'varchar', length: 32, default: '5-10' })
  54. intervalTime: string
  55. @Column({ default: 5 })
  56. threads: number
  57. @Column({ default: false })
  58. delFlag: boolean
  59. @Column({ type: 'datetime', precision: 6, default: null })
  60. startedAt: Date
  61. @CreateDateColumn()
  62. createdAt: Date
  63. @UpdateDateColumn()
  64. updatedAt: Date
  65. }