Провайдер для обработки пакета *.bkp

Чтение пакета можно осуществлять при помощи модуля transfer-package

При работе с модулем sync-transfer доступна возможность передачи провайдера для обработки, по умолчанию создан sync-postgresql-provider Он позволяет работать с БД PostgreSQL

Для реализации своего собственного провайдера с поддержкой другой БД нужно реализовать следующие методы провайдера:

  • applyToDb — обработка данных для добавления, обновления и удаления данных по указанным таблицам
  • select — выборка данных из БД для обновления информации на клиенте
  • append — отличается тем, что очистка записей на клиенте для таблицы не происходит, а выполняется простое добавление информации
  • saveAttachments — сохранение файлов в файловой системе
  • getAttachments — считываются файлы из файловой системы

Каждый метод возвращает объект, который содержит результат обработки. Пример результат:

{
    __errors: [],
    items: [] // для метода select данного свойства не будет
}
// пример для select
{
    __errors: [],
    tableName: [],
    tableName2: [] 
}

Объект (массив) __errors содержится всегда. Он предназначен для хранения ошибок при обработке. Формат ошибки:

{
    message: 'текст ошибки'
}

Объект ошибки всегда должен состоять как минимума из одного свойства message

Подробное описание методов можно узнать здесь

Применение собственного провайдера

var syncCustomProvider = require('sync-custom-provider');
...
var provider = syncPostgreSqlProvider();
app.use(transfer(TEMP_FOLDER), provider);

Подробнее читать тут

Исходный код

git clone git://git.appcode.pw/sync-postgresql-provider.git
npm install

Особенности обработки

Формат возвращения вложенных данных (файлов):

{
    buffer: Buffer, // массив байтов, получается путем вызова fs.readFile
    path: string // относительный путь к файлу. Например /readme.txt 
}

Формат результата сохранения вложения:

{
    __sync: true,
    __key: string, // имя первичного ключа обычно id, можно получить из дополнительной информации data.custom.__key
    [__key]: any // значение первичного ключа
}

Формат результат выборки данных:

{
    tableName: [], // массив значений для сущности tableName
    tabelName2: [] // массив значений для сущности tableName2
}

Формат применения (создания, обновления, удаления) данных:

{
    ...,
    __sync: true
}
Print Friendly, PDF & Email