Skip to content

Commit 05df894

Browse files
committed
fix: ルール予約によってイベントリレーされた予約情報が更新されない問題を修正
1 parent 78330b7 commit 05df894

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

src/model/db/IReserveDB.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,6 @@ export default interface IReserveDB {
5353
findOldTime(baseTime: apid.UnixtimeMS): Promise<Reserve[]>;
5454
findTimeSpecification(option: IFindTimeSpecificationOption): Promise<Reserve | null>;
5555
getManualIds(option: IGetManualIdsOption): Promise<apid.ReserveId[]>;
56+
getRuleEventRelayIds(): Promise<apid.ReserveId[]>;
5657
countRuleIds(ruleIds: apid.RuleId[], type: apid.GetReserveType): Promise<RuleIdCountResult[]>;
5758
}

src/model/db/ReserveDB.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ export default class ReserveDB implements IReserveDB {
452452
.createQueryBuilder()
453453
.select('reserve.id')
454454
.from(Reserve, 'reserve')
455-
.where('reserve.ruleId is null');
455+
.where('reserve.ruleId is :ruleId', { ruleId: null });
456456

457457
if (option.hasTimeReserve === false) {
458458
queryBuilder = queryBuilder.andWhere('reserve.programId is not null');
@@ -468,6 +468,30 @@ export default class ReserveDB implements IReserveDB {
468468
});
469469
}
470470

471+
/**
472+
* ルール予約によってイベントリレーで予約された reserve id を取得する
473+
* @returns Promise<apid.ReserveId[]>
474+
*/
475+
public async getRuleEventRelayIds(): Promise<apid.ReserveId[]> {
476+
const connection = await this.op.getConnection();
477+
478+
const queryBuilder = connection
479+
.createQueryBuilder()
480+
.select('reserve.id')
481+
.from(Reserve, 'reserve')
482+
.andWhere('reserve.ruleId is not null')
483+
.andWhere('reserve.isEventRelay is :isEventRelay', { isEventRelay: this.op.convertBoolean(true) })
484+
.orderBy('reserve.id', 'ASC');
485+
486+
const result = await this.promieRetry.run(() => {
487+
return queryBuilder.getMany();
488+
});
489+
490+
return result.map(r => {
491+
return r.id;
492+
});
493+
}
494+
471495
/**
472496
* ruleId を指定して予約数をカウントする
473497
* @param ruleIds: apid.RuleId[]

src/model/operator/reservation/ReservationManageModel.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1149,6 +1149,12 @@ class ReservationManageModel implements IReservationManageModel {
11491149
throw err;
11501150
});
11511151

1152+
// ルール予約によってイベントリレーで予約された予約の id を取得
1153+
const ruleEventRelayIds = await this.reserveDB.getRuleEventRelayIds().catch(err => {
1154+
this.log.system.error('get rule event relay ids error');
1155+
throw err;
1156+
});
1157+
11521158
// ルールの id を取得
11531159
const ruleIds = await this.ruleDB.getIds().catch(err => {
11541160
this.log.system.error('get rule ids error');
@@ -1163,6 +1169,14 @@ class ReservationManageModel implements IReservationManageModel {
11631169
await Util.sleep(10);
11641170
}
11651171

1172+
// ルール予約によってイベントリレーで予約された予約の更新
1173+
for (const manualId of ruleEventRelayIds) {
1174+
await this.update(manualId, isSuppressLog).catch(err => {
1175+
this.log.system.error(err);
1176+
});
1177+
await Util.sleep(10);
1178+
}
1179+
11661180
// ルール予約更新
11671181
for (const ruleId of ruleIds) {
11681182
await this.updateRule(ruleId, isSuppressLog, isFirstUpdate).catch(err => {

0 commit comments

Comments
 (0)