/[sudobot]/trunk/src/services/QueueManager.ts
ViewVC logotype

Diff of /trunk/src/services/QueueManager.ts

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 428 by rakin, Mon Jul 29 17:30:11 2024 UTC revision 430 by rakin, Mon Jul 29 17:30:12 2024 UTC
# Line 3  import DiscordClient from "../client/Cli Line 3  import DiscordClient from "../client/Cli
3  import QueuedJob from "../models/QueuedJob";  import QueuedJob from "../models/QueuedJob";
4  import Queue, { QueueOptions } from "../utils/structures/Queue";  import Queue, { QueueOptions } from "../utils/structures/Queue";
5  import Service from "../utils/structures/Service";  import Service from "../utils/structures/Service";
 import { v4 as uuid } from "uuid";  
6  import path from "path";  import path from "path";
7    import { generate as randomstring } from 'randomstring';
8    
9  export type QueueCreateOptions = {  export type QueueCreateOptions = {
10      data?: { [key: string | number]: any };      data?: { [key: string | number]: any };
11      runAt?: Date;      runAt?: Date;
12      runAfter?: number;      runAfter?: number;
13        guild?: string;
14  };  };
15    
16  export default class QueueManager extends Service {  export default class QueueManager extends Service {
# Line 34  export default class QueueManager extend Line 35  export default class QueueManager extend
35          return this.queues.get(id)?.cancel();          return this.queues.get(id)?.cancel();
36      }      }
37    
38      async addQueue(queueClass: new (client: DiscordClient, queueOptions: QueueOptions) => Queue, { data, runAt, runAfter }: QueueCreateOptions) {      async addQueue(queueClass: new (client: DiscordClient, queueOptions: QueueOptions) => Queue, { data, runAt, runAfter, guild }: QueueCreateOptions) {
39          if (runAfter !== 0 && runAfter !== 0 && !runAfter && !runAt) {          if (runAfter !== 0 && runAfter !== 0 && !runAfter && !runAt) {
40              throw new Error("One of runAfter or runAt must be specified for creating a queue");              throw new Error("One of runAfter or runAt must be specified for creating a queue");
41          }          }
42    
43          const id = uuid();          const id = randomstring(7);
44          const model = await QueuedJob.create({ uuid: id, data, runOn: runAfter ? new Date(Date.now() + runAfter) : runAt!, createdAt: new Date(), className: queueClass.name });          const model = await QueuedJob.create({ uuid: id, data, runOn: runAfter ? new Date(Date.now() + runAfter) : runAt!, createdAt: new Date(), className: queueClass.name, guild });
45          const queue = new queueClass(this.client, { model, id, runAt, runAfter });          const queue = new queueClass(this.client, { model, id, runAt, runAfter });
46          this.setQueue(queue);          this.setQueue(queue);
47            return queue;
48      }      }
49    
50      runQueue(id: string) {      runQueue(id: string) {

Legend:
Removed from v.428  
changed lines
  Added in v.430

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26