TypeORM: Как найти записи, которые не совпадают во многих отношениях?

#typeorm

Вопрос:

У меня есть таблица под названием Заказы, которая имеет множество связей с историей заказов, которая имеет множество связей с событиями истории заказов

Таким образом, заказ может выглядеть примерно так (упрощенно):

 {  id: 234,  history: [  { timestamp: 12345, event: { event_name: 'ORDER_CREATED' } },  { timestamp: 12345, event: { event_name: 'ORDER_PREPARED' } },  ], }, {  id: 235,  history: [  { timestamp: 12345, event: { event_name: 'ORDER_CREATED' } },  { timestamp: 23456, event: { event_name: 'NOT_PREPARED_WARNING_SENT' } },  ], }  

Мне нужно найти заказы, которые

  1. Не подготовлены (не имеют статуса ORDER_PREPARED) И
  2. Предупреждение не было отправлено (не имеет статуса NOT_PREPARED_WARNING_SENT)

Другими словами (или словами Деморгана), мне нужно отфильтровать заказы, в которых есть ORDER_PREPARED ИЛИ NOT_PREPARED_WARNING_SENT (или и то, и другое).

Как я могу написать запрос для этого?