Spaces:
Runtime error
Runtime error
File size: 2,399 Bytes
46252cd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Unique } from 'typeorm';
import { DateTransformer } from '../../../common/transformers/date.transformer';
import { jsonColumnType, dateColumnType } from '../../../common/utils/column-types';
export enum BatchStatus {
PENDING = 'pending',
PROCESSING = 'processing',
COMPLETED = 'completed',
CANCELLED = 'cancelled',
FAILED = 'failed',
}
export enum BatchMessageStatus {
PENDING = 'pending',
SENT = 'sent',
FAILED = 'failed',
CANCELLED = 'cancelled',
}
export interface BatchMessageResult {
chatId: string;
status: BatchMessageStatus;
messageId?: string;
error?: {
code: string;
message: string;
};
sentAt?: Date;
}
export interface BatchProgress {
total: number;
sent: number;
failed: number;
pending: number;
cancelled: number;
}
@Entity('message_batches')
// Uniqueness is scoped to the session, not global: one session can't deny a batch id to another.
// Migration 1781800000000 carries the same constraint on existing databases.
@Unique('UQ_message_batches_session_id_batch_id', ['sessionId', 'batchId'])
export class MessageBatch {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ name: 'batch_id' })
batchId: string;
@Column({ name: 'session_id' })
sessionId: string;
@Column({ type: 'varchar', default: BatchStatus.PENDING })
status: BatchStatus;
@Column({ type: jsonColumnType() })
messages: Array<{
chatId: string;
type: string;
content: Record<string, unknown>;
variables?: Record<string, string>;
}>;
@Column({ type: jsonColumnType(), nullable: true })
options: {
delayBetweenMessages: number;
randomizeDelay: boolean;
stopOnError: boolean;
};
@Column({ type: jsonColumnType(), nullable: true })
progress: BatchProgress;
@Column({ type: jsonColumnType(), nullable: true })
results: BatchMessageResult[];
@Column({ name: 'current_index', default: 0 })
currentIndex: number;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt: Date;
@Column({ name: 'started_at', type: dateColumnType(), nullable: true, transformer: DateTransformer })
startedAt: Date | null;
@Column({ name: 'completed_at', type: dateColumnType(), nullable: true, transformer: DateTransformer })
completedAt: Date | null;
}
|