audiobookshelf/server/objects/files/EBookFile.js

72 lines
2.2 KiB
JavaScript
Raw Normal View History

2022-03-08 19:31:44 -06:00
const FileMetadata = require('../metadata/FileMetadata')
class EBookFile {
/**
* @param {{ ino: any; deviceId: any; isSupplementary?: boolean; addedAt?: number; updatedAt?: number; metadata?: { filename: string; ext: string; path: string; relPath: string; size: number; mtimeMs: number; ctimeMs: number; birthtimeMs: number; }; libraryFolderId?: any; libraryId?: any; mediaType?: any; mtimeMs?: any; ctimeMs?: any; birthtimeMs?: any; path?: any; relPath?: any; isFile?: any; mediaMetadata?: any; libraryFiles?: any; }} file
*/
2022-03-08 19:31:44 -06:00
constructor(file) {
this.ino = null
this.deviceId = null
2022-03-08 19:31:44 -06:00
this.metadata = null
this.ebookFormat = null
this.addedAt = null
this.updatedAt = null
2022-03-08 19:31:44 -06:00
if (file) {
this.construct(file)
}
}
/**
* @param {{ ino: any; deviceId: any; isSupplementary?: boolean | undefined; addedAt: any; updatedAt: any; metadata: any; libraryFolderId?: any; libraryId?: any; mediaType?: any; mtimeMs?: any; ctimeMs?: any; birthtimeMs?: any; path?: any; relPath?: any; isFile?: any; mediaMetadata?: any; libraryFiles?: any; ebookFormat?: any; }} file
*/
2022-03-08 19:31:44 -06:00
construct(file) {
this.ino = file.ino
this.deviceId = file.deviceId
2022-03-18 12:37:47 -05:00
this.metadata = new FileMetadata(file.metadata)
2023-09-19 15:42:38 -05:00
this.ebookFormat = file.ebookFormat || this.metadata.format
2022-03-08 19:31:44 -06:00
this.addedAt = file.addedAt
this.updatedAt = file.updatedAt
2022-03-08 19:31:44 -06:00
}
toJSON() {
return {
ino: this.ino,
deviceId: this.deviceId,
2022-03-08 19:31:44 -06:00
metadata: this.metadata.toJSON(),
ebookFormat: this.ebookFormat,
addedAt: this.addedAt,
updatedAt: this.updatedAt
2022-03-08 19:31:44 -06:00
}
}
2023-01-01 18:09:00 -06:00
get isEpub() {
return this.ebookFormat === 'epub'
}
setData(libraryFile) {
this.ino = libraryFile.ino
this.deviceId = libraryFile.deviceId
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
}
2022-03-08 19:31:44 -06:00
}
module.exports = EBookFile