mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const { getId } = require('../utils/index')
 | 
						|
 | 
						|
class Task {
 | 
						|
  constructor() {
 | 
						|
    this.id = null
 | 
						|
    this.action = null // e.g. embed-metadata, encode-m4b, etc
 | 
						|
    this.data = null // additional info for the action like libraryItemId
 | 
						|
 | 
						|
    this.title = null
 | 
						|
    this.description = null
 | 
						|
    this.error = null
 | 
						|
 | 
						|
    this.isFailed = false
 | 
						|
    this.isFinished = false
 | 
						|
 | 
						|
    this.startedAt = null
 | 
						|
    this.finishedAt = null
 | 
						|
  }
 | 
						|
 | 
						|
  toJSON() {
 | 
						|
    return {
 | 
						|
      id: this.id,
 | 
						|
      action: this.action,
 | 
						|
      data: this.data ? { ...this.data } : {},
 | 
						|
      title: this.title,
 | 
						|
      description: this.description,
 | 
						|
      error: this.error,
 | 
						|
      isFailed: this.isFailed,
 | 
						|
      isFinished: this.isFinished,
 | 
						|
      startedAt: this.startedAt,
 | 
						|
      finishedAt: this.finishedAt
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  setData(action, title, description, data = {}) {
 | 
						|
    this.id = getId(action)
 | 
						|
    this.action = action
 | 
						|
    this.data = { ...data }
 | 
						|
    this.title = title
 | 
						|
    this.description = description
 | 
						|
    this.startedAt = Date.now()
 | 
						|
  }
 | 
						|
 | 
						|
  setFailed(message) {
 | 
						|
    this.error = message
 | 
						|
    this.isFailed = true
 | 
						|
    this.failedAt = Date.now()
 | 
						|
    this.setFinished()
 | 
						|
  }
 | 
						|
 | 
						|
  setFinished() {
 | 
						|
    this.isFinished = true
 | 
						|
    this.finishedAt = Date.now()
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = Task |