/**
 * @namespace Model
 * @property {module:BookModel} BookModel
 */
/**
 * BookModel handle with Book Database Collection interactions.
 * @module BookModel
 * @extends module:BaseModel
 */
'use strict'
/**
 * Book Scheme Module
 * @const
*/
import Book from './schemes/Book'
/**
 * BaseModel Module
 * @const
*/
import BaseModel from './Base.Model'

export default class BookModel extends BaseModel {
	constructor (data) {
		super(Book, '_id', data)
	}

	/**
	 * Book AddingChapterToList Method.
	 * Query this.Schema pushing new chapter to list.
	 * When this promise is resolved this method retrieves the Object update in MongoDB.
	 *
	 * @name AddingChapterToList
	 * @param {String} bookId
	 * @param {Object} chapterId - Chapter Object ID
	 * @method addingChapterToList
	 * @return {object} Return a promise to who intend to update data.
	*/
	AddingChapterToList (bookId, chapterId) {
		return this.Scheme.update({_id: bookId}, {$push: {chapters: chapterId}}, { new: true })
	}
}