260330:1011 Addied correspondence_revieion_attcahments table table #01
CI / CD Pipeline / build (push) Failing after 21m19s
CI / CD Pipeline / deploy (push) Has been skipped

This commit is contained in:
admin
2026-03-30 10:11:40 +07:00
parent 1c6fec6c65
commit c83588ab43
287 changed files with 15117 additions and 69 deletions
@@ -167,24 +167,33 @@ export class ReservationService {
/**
* Cron job: Cleanup expired reservations every 5 minutes
* ใช้ try/catch เพื่อรองรับ transient ECONNRESET — TypeORM pool จะ reconnect อัตโนมัติใน tick ถัดไป
*/
@Cron('*/5 * * * *')
async cleanupExpired(): Promise<void> {
const result = await this.reservationRepo
.createQueryBuilder()
.update()
.set({
status: ReservationStatus.CANCELLED,
cancelledAt: () => 'NOW()',
})
.where('document_number_status = :status', {
status: ReservationStatus.RESERVED,
})
.andWhere('expires_at < NOW()')
.execute();
try {
const result = await this.reservationRepo
.createQueryBuilder()
.update()
.set({
status: ReservationStatus.CANCELLED,
cancelledAt: () => 'NOW()',
})
.where('document_number_status = :status', {
status: ReservationStatus.RESERVED,
})
.andWhere('expires_at < NOW()')
.execute();
if ((result.affected ?? 0) > 0) {
this.logger.log(`Cleaned up ${result.affected} expired reservations`);
if ((result.affected ?? 0) > 0) {
this.logger.log(`Cleaned up ${result.affected} expired reservations`);
}
} catch (error: unknown) {
// ECONNRESET บน idle connection — TypeORM จะ reconnect pool ใน request ถัดไปโดยอัตโนมัติ
const msg = error instanceof Error ? error.message : String(error);
this.logger.warn(
`[cleanupExpired] Transient DB error (will retry next tick): ${msg}`
);
}
}