File tree Expand file tree Collapse file tree 3 files changed +40
-1
lines changed
Expand file tree Collapse file tree 3 files changed +40
-1
lines changed Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff 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[]
Original file line number Diff line number Diff 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 => {
You can’t perform that action at this time.
0 commit comments