ApplicationBatchUpdater позволяет осуществлять базовую настройку пакетного обновления:

  • устанавливать критерии поиска;

  • непосредственно выполнять сохранение.

Type parameters

Hierarchy

Methods

all

  • all(): Promise<number>
  • Метод выполняет пакетное обновление.

    Возвращает количество действительно обновлённых элементов согласно ApplicationBatchUpdater.size, начиная с ApplicationBatchUpdater.from.

    По умолчанию размер обновляемых элементов ограничен 10 записями. Если нужно обновить больше элементов, используйте метод ApplicationBatchUpdater.size.

    const searchResults = await Application.update()
        .set('str', _ => 'test')
        .where((f, g) => g.and (
            f.__deletedAt.eq(null),
            f.str.eq(null)
        ))
        .all();
    

    Returns Promise<number>

from

  • from(n: number): this
  • Метод позволяет пропустить заданное количество обновляемых элементов.

    Parameters

    • n: number

      Количество элементов, которое необходимо пропустить.

      Например, при работе с большим количеством элементов приложения можно разбить обновление на порции и динамически определять начало выборки.

      Context.data.from += 100;
      const rows = await Application.batch()
          .update()
          .set('str', _ => 'test')
          .from(Context.data.from)
          .where((f, g) => g.and (
              f.__deletedAt.eq(null),
              f.str.eq(null)
          ))
          .all();
      

    Returns this

notify

  • notify(enabled: boolean): this
  • Метод настраивает отправку уведомлений при обновлении элементов.

    Parameters

    • enabled: boolean

      Если enabled имеет значение true, отправка уведомлений включена. По умолчанию отправка выключена.

      Важно: включение уведомлений при обновлении большого количества элементов приводит к повышенной нагрузке на систему. Для каждого элемента будет сформировано стандартное событие обновления, которое далее обрабатывается в системе в общем порядке.

      const rows = await Application.batch().update().set('str', _ => 'test')
         .notify(true)
         .all();
      

    Returns this

set

  • set<K>(f: K, v: UpdateClosure<UpdatableItem<TFull>, RemoveIndex<T>[K]>): ApplicationBatchUpdater<TFull, Omit<RemoveIndex<T>, K>, P>
  • Метод позволяет задать правила обновления полей элементов коллекции.

    Type parameters

    • K: keyof UpdatableItem<T>

    Parameters

    • f: K

      Имя обновляемого поля элемента приложения.

    • v: UpdateClosure<UpdatableItem<TFull>, RemoveIndex<T>[K]>

      Значение обновляемого поля.

      const rows = await Application.batch()
          .update()
          .set('str0', _ => 'test')
          .set('str1', f => f.str)
          .set('str2', (f, op) => op.concat(f.str0, '+', f.str1))
          .all();
      

    Returns ApplicationBatchUpdater<TFull, Omit<RemoveIndex<T>, K>, P>

size

  • size(n: number): this
  • Метод позволяет задать ограничение количества обновляемых элементов.

    Parameters

    • n: number

      Размер выборки (по умолчанию 10, максимум 10000).

      const rows = await Application.batch()
          .update()
          .set('str', _ => 'test')
          .size(500)
          .where((f, g) => g.and (
              f.__deletedAt.eq(null),
              f.str.eq(null)
          ))
          .all();
      

    Returns this

where

  • where(fc: FilterClosure<TFull>): this
  • Метод позволяет задать фильтрацию обновляемых элементов коллекции.

    Parameters

    • fc: FilterClosure<TFull>

      Фильтры для поиска.

      const rows = await Application.batch()
          .update()
          .set('str', _ => 'test')
          .where((f, g) => g.and (
              f.__deletedAt.eq(null),
              f.str.eq(null)
          ))
          .all();
      

    Returns this