const FileMetadata = require('../metadata/FileMetadata') class EBookFile { constructor(file) { this.ino = null this.metadata = null this.ebookFormat = null this.addedAt = null this.updatedAt = null if (file) { this.construct(file) } } construct(file) { this.ino = file.ino this.metadata = new FileMetadata(file.metadata) this.ebookFormat = file.ebookFormat this.addedAt = file.addedAt this.updatedAt = file.updatedAt } toJSON() { return { ino: this.ino, metadata: this.metadata.toJSON(), ebookFormat: this.ebookFormat, addedAt: this.addedAt, updatedAt: this.updatedAt } } get isEpub() { return this.ebookFormat === 'epub' } setData(libraryFile) { this.ino = libraryFile.ino this.metadata = libraryFile.metadata.clone() this.ebookFormat = libraryFile.metadata.format this.addedAt = Date.now() this.updatedAt = Date.now() } updateFromLibraryFile(libraryFile) { var hasUpdated = false if (this.metadata.update(libraryFile.metadata)) { hasUpdated = true } if (this.ebookFormat !== libraryFile.metadata.format) { this.ebookFormat = libraryFile.metadata.format hasUpdated = true } return hasUpdated } } module.exports = EBookFile