Skip to content

Commit c2ea465

Browse files
committed
fix(queue): update auction message DTO and workers for LFG service compatibility
1 parent 5650c70 commit c2ea465

File tree

3 files changed

+61
-33
lines changed

3 files changed

+61
-33
lines changed

apps/dma/src/workers/auctions.worker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export class AuctionsWorker {
8080
this.stats.total++;
8181

8282
try {
83-
const args: AuctionJobQueue = message.payload;
83+
const args: AuctionMessageDto = message;
8484

8585
this.BNet = new BlizzAPI({
8686
region: args.region,
@@ -235,7 +235,7 @@ export class AuctionsWorker {
235235
}
236236
} catch (errorOrException) {
237237
const duration = Date.now() - startTime;
238-
const realmId = message.payload?.connectedRealmId || 'unknown';
238+
const realmId = message?.connectedRealmId || 'unknown';
239239
const responseError = isResponseError(errorOrException);
240240

241241
if (responseError) {

apps/wow-progress/src/services/wow-progress.lfg.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ export class WowProgressLfgService {
236236
});
237237

238238
const profileMessageDto = RabbitMQMessageDto.create({
239-
id: characterQueue.guid,
239+
messageId: characterQueue.guid,
240240
data: {
241241
guid: characterQueue.guid,
242242
name: characterQueue.name,

libs/resources/src/dto/queue/auction-message.dto.ts

Lines changed: 58 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,57 @@
1-
import { AuctionJobQueue } from '@app/resources/types';
21
import { TIME_MS } from '@app/resources/constants';
32
import {
43
IRabbitMQMessageBase,
54
RabbitMQMessageDto,
65
} from '@app/resources/dto/queue';
6+
import { RegionIdOrName } from '@alexzedim/blizzapi';
7+
8+
/**
9+
* Base interface for creating auction message entries
10+
*/
11+
export interface IAuctionMessageBase {
12+
connectedRealmId: number;
13+
auctionsTimestamp?: number;
14+
commoditiesTimestamp?: number;
15+
isAssetClassIndex?: boolean;
16+
region?: RegionIdOrName;
17+
clientId?: string;
18+
clientSecret?: string;
19+
accessToken?: string;
20+
}
721

822
/**
923
* Auction Message DTO for RabbitMQ
1024
*
1125
* Wraps AuctionJobQueue with RabbitMQ-specific metadata and routing.
1226
* Used for auction data synchronization from Blizzard API.
1327
*/
14-
export class AuctionMessageDto extends RabbitMQMessageDto<AuctionJobQueue> {
15-
readonly payload: AuctionJobQueue;
28+
export class AuctionMessageDto extends RabbitMQMessageDto<IAuctionMessageBase> {
29+
readonly connectedRealmId: number;
30+
readonly auctionsTimestamp?: number;
31+
readonly commoditiesTimestamp?: number;
32+
readonly isAssetClassIndex?: boolean;
33+
readonly region?: RegionIdOrName;
34+
readonly clientId?: string;
35+
readonly clientSecret?: string;
36+
readonly accessToken?: string;
37+
38+
private static isRabbitMQMessageBase<T>(
39+
params: any,
40+
): params is IRabbitMQMessageBase<T> {
41+
return !!params && typeof params === 'object' && 'data' in (params as any);
42+
}
43+
44+
private static isAuctionCreateParams(
45+
params: any,
46+
): params is Omit<Partial<AuctionMessageDto>, 'connectedRealmId'> &
47+
Pick<IAuctionMessageBase, 'connectedRealmId'> {
48+
return (
49+
!!params && typeof params === 'object' && 'connectedRealmId' in params
50+
);
51+
}
1652

1753
constructor(params: any) {
18-
const auctionData = params.data || params.payload || params;
54+
const auctionData = params.data || params;
1955

2056
super({
2157
messageId: params.id || `auction-${auctionData.connectedRealmId}`,
@@ -28,44 +64,36 @@ export class AuctionMessageDto extends RabbitMQMessageDto<AuctionJobQueue> {
2864
metadata: params.metadata,
2965
});
3066

31-
this.payload = auctionData;
67+
Object.assign(this, auctionData);
3268
}
3369

3470
/**
3571
* Create from auction data with RabbitMQ routing
3672
*/
3773
static create<T>(params: IRabbitMQMessageBase<T>): RabbitMQMessageDto<T>;
38-
static create(params: {
39-
data: AuctionJobQueue;
40-
priority?: number;
41-
source?: string;
42-
routingKey?: string;
43-
expiration?: number;
44-
}): AuctionMessageDto;
74+
static create(
75+
params: Omit<Partial<AuctionMessageDto>, 'connectedRealmId'> &
76+
Pick<IAuctionMessageBase, 'connectedRealmId'>,
77+
): AuctionMessageDto;
4578
static create(
4679
params:
47-
| IRabbitMQMessageBase<AuctionJobQueue>
48-
| {
49-
data: AuctionJobQueue;
50-
priority?: number;
51-
source?: string;
52-
routingKey?: string;
53-
expiration?: number;
54-
},
55-
): RabbitMQMessageDto<AuctionJobQueue> | AuctionMessageDto {
56-
if (
57-
'id' in (params as any) ||
58-
'persistent' in (params as any) ||
59-
'metadata' in (params as any)
60-
) {
61-
return RabbitMQMessageDto.create(
62-
params as IRabbitMQMessageBase<AuctionJobQueue>,
80+
| IRabbitMQMessageBase<IAuctionMessageBase>
81+
| (Omit<Partial<AuctionMessageDto>, 'connectedRealmId'> &
82+
Pick<IAuctionMessageBase, 'connectedRealmId'>),
83+
): RabbitMQMessageDto<IAuctionMessageBase> | AuctionMessageDto {
84+
if (AuctionMessageDto.isRabbitMQMessageBase(params)) {
85+
return RabbitMQMessageDto.create(params);
86+
}
87+
88+
if (!AuctionMessageDto.isAuctionCreateParams(params)) {
89+
throw new Error(
90+
'AuctionMessageDto.create expected auction params with connectedRealmId.',
6391
);
6492
}
6593

6694
return new AuctionMessageDto({
67-
id: `auction-${params.data.connectedRealmId}`,
68-
data: params.data,
95+
id: `auction-${params.connectedRealmId}`,
96+
data: params,
6997
priority: params.priority ?? 5,
7098
source: params.source ?? 'dma',
7199
routingKey: params.routingKey ?? 'dma.auctions.normal',

0 commit comments

Comments
 (0)