Skip to content

Commit 9bc1d5d

Browse files
committed
reorg
1 parent 7e3d8fd commit 9bc1d5d

File tree

9 files changed

+47
-106
lines changed

9 files changed

+47
-106
lines changed

src/core/serializer.ts

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/drivers/db.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import { Queue } from '../core/queue.ts';
2-
import type { JobStatus, JobMeta, QueueMessage, DbJobRequest } from '../interfaces/job.ts';
2+
import type { JobStatus, JobMeta, QueueMessage, BaseJobOptions, WithPriority, WithDelay } from '../interfaces/job.ts';
33
import type { DatabaseAdapter, QueueJobRecord } from '../interfaces/database.ts';
44
import type { QueueOptions } from '../interfaces/plugin.ts';
55

6-
// Re-export job interface for this driver
7-
export type { DbJobRequest } from '../interfaces/job.ts';
6+
// Driver-specific job request interface
7+
export interface DbJobRequest<TPayload> extends BaseJobOptions, WithPriority, WithDelay {
8+
/** Job payload */
9+
payload: TPayload;
10+
// DB adapters may or may not support delay/priority - we allow them for flexibility
11+
// The specific DatabaseAdapter implementation determines actual support
12+
}
813

914
export class DbQueue<TJobMap = Record<string, any>> extends Queue<TJobMap, DbJobRequest<any>> {
1015
constructor(

src/drivers/file.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ import { promises as fs } from 'fs';
22
import { open } from 'fs/promises';
33
import path from 'path';
44
import { Queue } from '../core/queue.ts';
5-
import type { QueueMessage, JobMeta, JobStatus, FileJobRequest } from '../interfaces/job.ts';
5+
import type { QueueMessage, JobMeta, JobStatus, BaseJobOptions, WithDelay } from '../interfaces/job.ts';
66
import type { QueueOptions } from '../interfaces/plugin.ts';
77

8-
// Re-export job interface for this driver
9-
export type { FileJobRequest } from '../interfaces/job.ts';
8+
// Driver-specific job request interface
9+
export interface FileJobRequest<TPayload> extends BaseJobOptions, WithDelay {
10+
/** Job payload */
11+
payload: TPayload;
12+
// File queue supports delays but not priority ordering
13+
}
1014

1115
interface IndexData {
1216
lastId: number;

src/drivers/memory.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import { Queue } from '../core/queue.ts';
2-
import type { JobStatus, JobMeta, QueueMessage, InMemoryJobRequest } from '../interfaces/job.ts';
2+
import type { JobStatus, JobMeta, QueueMessage, BaseJobOptions, WithPriority, WithDelay } from '../interfaces/job.ts';
33
import type { QueueOptions } from '../interfaces/plugin.ts';
44

5-
// Re-export job interface for this driver
6-
export type { InMemoryJobRequest } from '../interfaces/job.ts';
5+
// Driver-specific job request interface
6+
export interface InMemoryJobRequest<TPayload> extends BaseJobOptions, WithPriority, WithDelay {
7+
/** Job payload */
8+
payload: TPayload;
9+
// In-memory queue supports both priority and delays
10+
}
711

812
interface InMemoryJobRecord {
913
id: string;

src/drivers/mongoose.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
import { Schema, model, Model, Document, Types } from 'mongoose';
22
import type { UpdateQuery, FilterQuery, QueryOptions } from 'mongoose';
33
import type { DatabaseAdapter, QueueJobRecord } from '../interfaces/database.ts';
4-
import type { JobMeta, JobStatus } from '../interfaces/job.ts';
4+
import type { JobMeta, JobStatus, BaseJobOptions, WithPriority, WithDelay } from '../interfaces/job.ts';
55
import { DbQueue } from '../drivers/db.ts';
66

7+
// Driver-specific job request interface
8+
export interface MongooseJobRequest<TPayload> extends BaseJobOptions, WithPriority, WithDelay {
9+
/** Job payload */
10+
payload: TPayload;
11+
// Mongoose/MongoDB queue supports both priority and delays
12+
}
13+
714
// MongoDB document structure for queue jobs
815
export interface IQueueJobDocument {
916
payload: Buffer;
@@ -245,5 +252,3 @@ export const QueueJob = createQueueModel();
245252
// Re-export for convenience
246253
export { DbQueue };
247254

248-
// Re-export job interface for Mongoose adapter
249-
export type { MongooseJobRequest } from '../interfaces/job.ts';

src/drivers/redis.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import { Queue } from '../core/queue.ts';
2-
import type { JobStatus, JobMeta, QueueMessage, RedisJobRequest } from '../interfaces/job.ts';
2+
import type { JobStatus, JobMeta, QueueMessage, BaseJobOptions, WithPriority, WithDelay } from '../interfaces/job.ts';
33
import type { QueueOptions } from '../interfaces/plugin.ts';
44

5-
// Re-export job interface for this driver
6-
export type { RedisJobRequest } from '../interfaces/job.ts';
5+
// Driver-specific job request interface
6+
export interface RedisJobRequest<TPayload> extends BaseJobOptions, WithPriority, WithDelay {
7+
/** Job payload */
8+
payload: TPayload;
9+
// Redis queue supports both priority and delays
10+
}
711

812

913
// Type-safe interface for Redis client based on the popular 'redis' npm package

src/drivers/sqs.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,17 @@ import type {
1414
JobStatus,
1515
JobMeta,
1616
QueueMessage,
17-
SqsJobRequest,
17+
BaseJobOptions,
18+
WithDelay,
1819
} from "../interfaces/job.ts";
1920
import type { QueueOptions } from "../interfaces/plugin.ts";
2021

21-
// Re-export job interface for this driver
22-
export type { SqsJobRequest } from "../interfaces/job.ts";
22+
// Driver-specific job request interface
23+
export interface SqsJobRequest<TPayload> extends BaseJobOptions, WithDelay {
24+
/** Job payload */
25+
payload: TPayload;
26+
// SQS supports delays (0-900 seconds max) but not priority ordering
27+
}
2328

2429
interface SqsClient {
2530
send: SQSClient["send"];

src/interfaces/job.ts

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -106,40 +106,4 @@ export interface BaseJobRequest<TPayload> extends BaseJobOptions {
106106
payload: TPayload;
107107
}
108108

109-
export interface DbJobRequest<TPayload> extends BaseJobOptions, WithPriority, WithDelay {
110-
/** Job payload */
111-
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
114-
}
115-
116-
export interface SqsJobRequest<TPayload> extends BaseJobOptions, WithDelay {
117-
/** Job payload */
118-
payload: TPayload;
119-
// SQS supports delays (0-900 seconds max) but not priority ordering
120-
}
121-
122-
export interface FileJobRequest<TPayload> extends BaseJobOptions, WithDelay {
123-
/** Job payload */
124-
payload: TPayload;
125-
// File queue supports delays but not priority ordering
126-
}
127-
128-
export interface InMemoryJobRequest<TPayload> extends BaseJobOptions, WithPriority, WithDelay {
129-
/** Job payload */
130-
payload: TPayload;
131-
// In-memory queue supports both priority and delays
132-
}
133-
134-
export interface RedisJobRequest<TPayload> extends BaseJobOptions, WithPriority, WithDelay {
135-
/** Job payload */
136-
payload: TPayload;
137-
// Redis queue supports both priority and delays
138-
}
139-
140-
export interface MongooseJobRequest<TPayload> extends BaseJobOptions, WithPriority, WithDelay {
141-
/** Job payload */
142-
payload: TPayload;
143-
// Mongoose/MongoDB queue supports both priority and delays
144-
}
145109

tests/core/queue.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { describe, it, expect, beforeEach, vi } from 'vitest';
22
import { Queue } from '../../src/core/queue.ts';
3-
import type { JobMeta, QueueMessage, DbJobRequest } from '../../src/interfaces/job.ts';
3+
import type { JobMeta, QueueMessage, JobRequestFull } from '../../src/interfaces/job.ts';
44

55
interface TestJobs {
66
'test-job': { data: string };
@@ -9,7 +9,7 @@ interface TestJobs {
99
'fail-job': { data: string };
1010
}
1111

12-
class TestQueue extends Queue<TestJobs, DbJobRequest<any>> {
12+
class TestQueue extends Queue<TestJobs, JobRequestFull<any>> {
1313
public messages: Array<{ payload: string; meta: JobMeta; id: string }> = [];
1414
public completedJobs: Array<{ id: string; message: QueueMessage }> = [];
1515
public failedJobs: Array<{ id: string; message: QueueMessage; error: unknown }> = [];

0 commit comments

Comments
 (0)