changemaker.lite/api/dist/services/video-schedule-queue.service.d.ts

87 lines
2.2 KiB
TypeScript

declare class VideoScheduleQueueService {
private queue;
private worker;
constructor();
/**
* Start the worker to process scheduled publish/unpublish jobs
*/
startWorker(): void;
/**
* Schedule a video to be published at a specific time
*/
schedulePublish(videoId: number, publishAt: Date, scheduledByUserId: string): Promise<{
jobId: string;
scheduledFor: Date;
}>;
/**
* Schedule a video to be unpublished at a specific time
*/
scheduleUnpublish(videoId: number, unpublishAt: Date, scheduledByUserId: string): Promise<{
jobId: string;
scheduledFor: Date;
}>;
/**
* Cancel a scheduled publish or unpublish
*/
cancelSchedule(videoId: number, action: 'publish' | 'unpublish'): Promise<void>;
/**
* Get upcoming scheduled publish/unpublish operations
*/
getUpcomingSchedules(limit?: number): Promise<Array<{
jobId: string;
videoId: number;
videoTitle: string | null;
action: 'publish' | 'unpublish';
scheduledFor: Date;
status: string;
}>>;
/**
* Get schedule history for a video
*/
getScheduleHistory(videoId: number, limit?: number): Promise<({
scheduledBy: {
id: string;
email: string;
name: string | null;
};
} & {
status: string;
error: string | null;
id: number;
createdAt: Date;
videoId: number;
action: string;
scheduledFor: Date;
executedAt: Date | null;
scheduledByUserId: string;
})[]>;
/**
* Get queue stats
*/
getStats(): Promise<{
waiting: number;
active: number;
delayed: number;
completed: number;
failed: number;
}>;
/**
* Pause the queue
*/
pause(): Promise<void>;
/**
* Resume the queue
*/
resume(): Promise<void>;
/**
* Clean up old completed and failed jobs
*/
cleanup(): Promise<number>;
/**
* Close queue and worker
*/
close(): Promise<void>;
}
export declare const videoScheduleQueueService: VideoScheduleQueueService;
export {};
//# sourceMappingURL=video-schedule-queue.service.d.ts.map