Source: parts/reader/reader-abstract.js

"use strict";

var debug = require("debug");
var logErr = debug('dbupdater:reader:abstract:err');

/** @namespace Reader */

/**
 * Абстрактный шаблон reader'а. Определяет интерфейс основных методов: init, getTasks и getText.
 * Нужно наследоваться от этого класса<br/>MyCoolReader.prototype = new TaskReaderAbstract();<br/>
 * Так можно создать свой адаптер для чтени задач из хранидища
 * @constructor
 * @memberof Reader
 */
function TaskReaderAbstract () {}

TaskReaderAbstract.prototype = {

    /**
     * Инициализация адаптера
     * @abstract
     * @param {function} cb - колбэк инициализации
     * @param {?Error} cb.err - Ошибка инициализации
     */
    init: function init (cb) {
        var err = new Error('TaskReaderAbstract.init must be implemented by subclass!');
        logErr(err);
        cb(err);
    },

    /**
     * Получает список всех задач в хранилище
     * @abstract
     * @param {function} cb - колбэк получения списка задач из хранилища
     * @param {?Error} cb.err - ошибка выполнения
     * @param {?object[]} cb.tasks - Массив задач в хранилище
     * @param {string} cb.tasks.name - имя задачи
     * @param {string} cb.tasks.md5 - md5 сумма задачи
     */
    getTasks: function taskSaverInit (cb) {
        var err = new Error('TaskReaderAbstract.getTasks must be implemented by subclass!');
        logErr(err);
        cb(err);
    },

    /**
     * Получить текст задачи
     * @abstract
     * @param {object} task - задача
     * @param {string} task.name - имя задачи
     * @param {string} task.md5 - контрольная сумма задачи
     * @param {function} cb - колбэк чтения задачи из хранилища
     * @param {?Error} cb.err - ошибка чтения
     * @param {?String} cb.text - текст задачи
     */
    getText: function (task, cb) {
        var err = new Error('TaskReaderAbstract.getText must be implemented by subclass!');
        logErr(err);
        cb(err);
    }

};

module.exports = TaskReaderAbstract;