mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-07 13:05:44 +00:00
changes
This commit is contained in:
@@ -1287,6 +1287,23 @@ export class BookingsRepository extends BaseRepository<Booking> {
|
||||
.getMany();
|
||||
}
|
||||
|
||||
/** Same as {@link findAllBySchedule} but for a page of schedules at once —
|
||||
* one query instead of one per schedule (batch monitoring board). */
|
||||
findAllBySchedules(scheduleIds: string[]): Promise<Booking[]> {
|
||||
if (!scheduleIds.length) return Promise.resolve([]);
|
||||
return this.repository
|
||||
.createQueryBuilder('booking')
|
||||
.leftJoinAndSelect('booking.company', 'company')
|
||||
.leftJoinAndSelect('booking.bookingContainers', 'bookingContainer')
|
||||
.leftJoinAndSelect('bookingContainer.containerType', 'containerType')
|
||||
.leftJoinAndSelect('booking.cargoType', 'cargoType')
|
||||
.where('booking.train_schedule_id IN (:...scheduleIds)', { scheduleIds })
|
||||
.orderBy('booking.is_government', 'DESC')
|
||||
.addOrderBy('booking.priority_score', 'DESC')
|
||||
.addOrderBy('booking.created_at', 'ASC')
|
||||
.getMany();
|
||||
}
|
||||
|
||||
/** Bookings currently reserved (SELECTED_FOR_BATCH) against a schedule. */
|
||||
findReservedForSchedule(scheduleId: string): Promise<Booking[]> {
|
||||
return this.repository
|
||||
@@ -1342,6 +1359,10 @@ export class BookingsRepository extends BaseRepository<Booking> {
|
||||
if (!bookingIds.length) return Promise.resolve([]);
|
||||
return this.bookingRepo(manager).find({
|
||||
where: { id: In(bookingIds) },
|
||||
// Per-relation SELECTs: the containerType/cargoType→wagonTypes M2M joins
|
||||
// multiply rows badly in a single join (hot path for every allocation
|
||||
// preview / assignment validation).
|
||||
relationLoadStrategy: 'query',
|
||||
relations: {
|
||||
company: true,
|
||||
originYard: true,
|
||||
|
||||
Reference in New Issue
Block a user