mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-03 19:07:00 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const Path = require('path')
 | 
						|
const date = require('../libs/dateAndTime')
 | 
						|
const version = require('../../package.json').version
 | 
						|
 | 
						|
class Backup {
 | 
						|
  constructor(data = null) {
 | 
						|
    this.id = null
 | 
						|
    this.datePretty = null
 | 
						|
    this.backupMetadataCovers = null
 | 
						|
 | 
						|
    this.backupDirPath = null
 | 
						|
    this.filename = null
 | 
						|
    this.path = null
 | 
						|
    this.fullPath = null
 | 
						|
    this.serverVersion = null
 | 
						|
 | 
						|
    this.fileSize = null
 | 
						|
    this.createdAt = null
 | 
						|
 | 
						|
    if (data) {
 | 
						|
      this.construct(data)
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  get detailsString() {
 | 
						|
    var details = []
 | 
						|
    details.push(this.id)
 | 
						|
    details.push(this.backupMetadataCovers ? '1' : '0')
 | 
						|
    details.push(this.createdAt)
 | 
						|
    details.push(this.serverVersion)
 | 
						|
    return details.join('\n')
 | 
						|
  }
 | 
						|
 | 
						|
  construct(data) {
 | 
						|
    this.id = data.details[0]
 | 
						|
    this.backupMetadataCovers = data.details[1] === '1'
 | 
						|
    this.createdAt = Number(data.details[2])
 | 
						|
    this.serverVersion = data.details[3] || null
 | 
						|
 | 
						|
    this.datePretty = date.format(new Date(this.createdAt), 'ddd, MMM D YYYY HH:mm')
 | 
						|
 | 
						|
    this.backupDirPath = Path.dirname(data.fullPath)
 | 
						|
    this.filename = Path.basename(data.fullPath)
 | 
						|
    this.path = Path.join('backups', this.filename)
 | 
						|
    this.fullPath = data.fullPath
 | 
						|
  }
 | 
						|
 | 
						|
  toJSON() {
 | 
						|
    return {
 | 
						|
      id: this.id,
 | 
						|
      backupMetadataCovers: this.backupMetadataCovers,
 | 
						|
      backupDirPath: this.backupDirPath,
 | 
						|
      datePretty: this.datePretty,
 | 
						|
      fullPath: this.fullPath,
 | 
						|
      path: this.path,
 | 
						|
      filename: this.filename,
 | 
						|
      fileSize: this.fileSize,
 | 
						|
      createdAt: this.createdAt,
 | 
						|
      serverVersion: this.serverVersion
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  setData(data) {
 | 
						|
    this.id = date.format(new Date(), 'YYYY-MM-DD[T]HHmm')
 | 
						|
    this.datePretty = date.format(new Date(), 'ddd, MMM D YYYY HH:mm')
 | 
						|
 | 
						|
    this.backupMetadataCovers = data.backupMetadataCovers
 | 
						|
 | 
						|
    this.backupDirPath = data.backupDirPath
 | 
						|
 | 
						|
    this.filename = this.id + '.audiobookshelf'
 | 
						|
    this.path = Path.join('backups', this.filename)
 | 
						|
    this.fullPath = Path.join(this.backupDirPath, this.filename)
 | 
						|
 | 
						|
    this.serverVersion = version
 | 
						|
 | 
						|
    this.createdAt = Date.now()
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = Backup |