@@ -78,73 +78,68 @@ export interface BaseJobOptions {
7878 ttr ?: number ;
7979}
8080
81- // Full options interface (for internal use)
82- export interface JobOptions extends BaseJobOptions {
83- /** Number of seconds to delay job execution from now */
84- delaySeconds ?: number ;
81+ // Feature interfaces for composable job options
82+ export interface WithPriority {
8583 /** Job priority - higher numbers = higher priority (processed first) */
8684 priority ?: number ;
8785}
8886
89- // Driver-specific options interfaces (without payload)
90- export interface DbJobOptions extends BaseJobOptions {
91- // DB adapters may or may not support delay/priority - we allow them for flexibility
92- // The specific DatabaseAdapter implementation determines actual support
93- /** Number of seconds to delay job execution from now. Support varies by database adapter. */
87+ export interface WithDelay {
88+ /** Number of seconds to delay job execution from now */
9489 delaySeconds ?: number ;
95- /** Job priority - higher numbers = higher priority. Support varies by database adapter. */
96- priority ?: number ;
9790}
9891
99- export interface SqsJobOptions extends BaseJobOptions {
100- /** Number of seconds to delay job execution from now (0-900 seconds max for SQS) */
101- delaySeconds ?: number ;
102- }
92+ // Full options interface (for internal use)
93+ export interface JobOptions extends BaseJobOptions , WithPriority , WithDelay { }
10394
104- export interface FileJobOptions extends BaseJobOptions {
105- /** Number of seconds to delay job execution from now */
106- delaySeconds ?: number ;
95+
96+ export interface JobRequestFull < TPayload > extends BaseJobOptions , WithPriority , WithDelay {
97+ /** Job payload */
98+ payload : TPayload ;
10799}
108100
109- export interface InMemoryJobOptions extends BaseJobOptions {
110- /** Number of seconds to delay job execution from now */
111- delaySeconds ?: number ;
112- /** Job priority - higher numbers = higher priority (processed first) */
113- priority ?: number ;
101+ // Driver-specific job request interfaces using feature composition
102+ // Each interface defines what features the driver supports
103+
104+ export interface BaseJobRequest < TPayload > extends BaseJobOptions {
105+ /** Job payload */
106+ payload : TPayload ;
114107}
115108
116- export interface JobRequestFull < TPayload > extends BaseJobOptions {
117- /** Job priority - higher numbers = higher priority (processed first) */
118- priority ?: number ;
119- /** Job delay - number of seconds to delay job execution from now */
120- delaySeconds ?: number ;
109+ export interface DbJobRequest < TPayload > extends BaseJobOptions , WithPriority , WithDelay {
121110 /** Job payload */
122111 payload : TPayload ;
112+ // DB adapters may or may not support delay/priority - we allow them for flexibility
113+ // The specific DatabaseAdapter implementation determines actual support
123114}
124115
125- // Combined interfaces that include payload for the new API
126- export interface BaseJobRequest < TPayload > extends BaseJobOptions {
116+ export interface SqsJobRequest < TPayload > extends BaseJobOptions , WithDelay {
127117 /** Job payload */
128118 payload : TPayload ;
119+ // SQS supports delays (0-900 seconds max) but not priority ordering
129120}
130121
131- export interface DbJobRequest < TPayload > extends DbJobOptions {
122+ export interface FileJobRequest < TPayload > extends BaseJobOptions , WithDelay {
132123 /** Job payload */
133124 payload : TPayload ;
125+ // File queue supports delays but not priority ordering
134126}
135127
136- export interface SqsJobRequest < TPayload > extends SqsJobOptions {
128+ export interface InMemoryJobRequest < TPayload > extends BaseJobOptions , WithPriority , WithDelay {
137129 /** Job payload */
138130 payload : TPayload ;
131+ // In-memory queue supports both priority and delays
139132}
140133
141- export interface FileJobRequest < TPayload > extends FileJobOptions {
134+ export interface RedisJobRequest < TPayload > extends BaseJobOptions , WithPriority , WithDelay {
142135 /** Job payload */
143136 payload : TPayload ;
137+ // Redis queue supports both priority and delays
144138}
145139
146- export interface InMemoryJobRequest < TPayload > extends InMemoryJobOptions {
140+ export interface MongooseJobRequest < TPayload > extends BaseJobOptions , WithPriority , WithDelay {
147141 /** Job payload */
148142 payload : TPayload ;
143+ // Mongoose/MongoDB queue supports both priority and delays
149144}
150145
0 commit comments