/** * @author [Tristan Valcke]{@link https://github.com/Itee} * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause} * * @file Todo * * @example Todo * */ // Todo: Extend from TDataQueueProcessor class TAbstractDataInserter { constructor ( parameters = {} ) { const _parameters = { ...{ driver: null }, ...parameters } this._driver = _parameters.driver this._isProcessing = false this._queue = [] } save ( data, parameters, onSuccess, onProgress, onError ) { if ( !data ) { onError( 'Data cannot be null or empty, aborting database insert !!!' ) return } if ( !parameters ) { onError( 'Invalid parent id, unable to set children to unknown database node !!!' ) return } this._queue.push( { data, parameters, onSuccess, onProgress, onError } ) this._processQueue() } _processQueue () { if ( this._queue.length === 0 || this._isProcessing ) { return } this._isProcessing = true const self = this const dataBloc = this._queue.shift() const data = dataBloc.data const parameters = dataBloc.parameters const onSuccess = dataBloc.onSuccess const onProgress = dataBloc.onProgress const onError = dataBloc.onError self._save( data, parameters, _onSaveSuccess, _onSaveProgress, _onSaveError ) function _onSaveSuccess ( result ) { onSuccess( result ) self._isProcessing = false self._processQueue() } function _onSaveProgress ( progress ) { onProgress( progress ) } function _onSaveError ( error ) { onError( error ) self._isProcessing = false self._processQueue() } } _save ( /*data, parameters, onSuccess, onProgress, onError*/ ) {} } export { TAbstractDataInserter }