mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
const ScheduledTask = require('./scheduled-task');
 | 
						|
const BackgroundScheduledTask = require('./background-scheduled-task');
 | 
						|
const validation = require('./pattern-validation');
 | 
						|
const storage = require('./storage');
 | 
						|
 | 
						|
/**
 | 
						|
 * @typedef {Object} CronScheduleOptions
 | 
						|
 * @prop {boolean} [scheduled] if a scheduled task is ready and running to be
 | 
						|
 *  performed when the time matches the cron expression.
 | 
						|
 * @prop {string} [timezone] the timezone to execute the task in.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Creates a new task to execute the given function when the cron
 | 
						|
 *  expression ticks.
 | 
						|
 *
 | 
						|
 * @param {string} expression The cron expression.
 | 
						|
 * @param {Function} func The task to be executed.
 | 
						|
 * @param {CronScheduleOptions} [options] A set of options for the scheduled task.
 | 
						|
 * @returns {ScheduledTask} The scheduled task.
 | 
						|
 */
 | 
						|
function schedule(expression, func, options) {
 | 
						|
    const task = createTask(expression, func, options);
 | 
						|
 | 
						|
    storage.save(task);
 | 
						|
 | 
						|
    return task;
 | 
						|
}
 | 
						|
 | 
						|
function createTask(expression, func, options) {
 | 
						|
    if (typeof func === 'string')
 | 
						|
        return new BackgroundScheduledTask(expression, func, options);
 | 
						|
 | 
						|
    return new ScheduledTask(expression, func, options);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Check if a cron expression is valid.
 | 
						|
 *
 | 
						|
 * @param {string} expression The cron expression.
 | 
						|
 * @returns {boolean} Whether the expression is valid or not.
 | 
						|
 */
 | 
						|
function validate(expression) {
 | 
						|
    try {
 | 
						|
        validation(expression);
 | 
						|
 | 
						|
        return true;
 | 
						|
    } catch (_) {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Gets the scheduled tasks.
 | 
						|
 *
 | 
						|
 * @returns {ScheduledTask[]} The scheduled tasks.
 | 
						|
 */
 | 
						|
function getTasks() {
 | 
						|
    return storage.getTasks();
 | 
						|
}
 | 
						|
 | 
						|
module.exports = { schedule, validate, getTasks };
 |