From 8b82987f32fdb65349204f7e8bbaf5a2a4e51393 Mon Sep 17 00:00:00 2001 From: Jelle De Loecker Date: Thu, 18 Jan 2024 12:41:20 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Move=20more=20things=20to=20Stages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/class/task_service.js | 6 +-- lib/core/alchemy.js | 26 ++--------- lib/stages/10-datasource.js | 14 ------ lib/stages/15-tasks.js | 27 ++++++++++++ lib/stages/20-settings.js | 54 +++++++++++++++++++++++ lib/stages/{20-routes.js => 50-routes.js} | 0 lib/stages/{30-server.js => 90-server.js} | 7 +-- 7 files changed, 87 insertions(+), 47 deletions(-) create mode 100644 lib/stages/15-tasks.js create mode 100644 lib/stages/20-settings.js rename lib/stages/{20-routes.js => 50-routes.js} (100%) rename lib/stages/{30-server.js => 90-server.js} (97%) diff --git a/lib/class/task_service.js b/lib/class/task_service.js index 9273c9ca..d45ad041 100644 --- a/lib/class/task_service.js +++ b/lib/class/task_service.js @@ -10,7 +10,7 @@ let running_task_menu, * * @author Jelle De Loecker * @since 1.3.17 - * @version 1.3.17 + * @version 1.4.0 */ const Service = Function.inherits('Alchemy.Base', 'Alchemy.Task', function TaskService() { @@ -33,10 +33,6 @@ const Service = Function.inherits('Alchemy.Base', 'Alchemy.Task', function TaskS this.initSchedules(); singleton = this; - - if (alchemy.settings.task.janeway_menu) { - this.createJanewayTaskMenu(); - } }); /** diff --git a/lib/core/alchemy.js b/lib/core/alchemy.js index ec69c9ab..7b098a23 100644 --- a/lib/core/alchemy.js +++ b/lib/core/alchemy.js @@ -412,30 +412,10 @@ Alchemy.setMethod(function setMaxEventLoopLag(max_lag) { * * @author Jelle De Loecker * @since 1.3.17 - * @version 1.3.17 + * @version 1.4.0 */ Alchemy.setMethod(function afterStart() { - this.startTaskService(); -}); - -let task_service_has_started = false; - -/** - * Start the task service - * - * @author Jelle De Loecker - * @since 1.3.17 - * @version 1.3.17 - */ -Alchemy.setMethod(function startTaskService() { - - if (task_service_has_started) { - return; - } - - task_service_has_started = true; - - this.task_service = new Classes.Alchemy.Task.TaskService(); + }); /** @@ -2366,6 +2346,8 @@ Alchemy.setMethod(function start(options, callback) { STAGES.launch([ 'load_app', 'datasource', + 'tasks', + 'settings', 'routes', 'server', ]); diff --git a/lib/stages/10-datasource.js b/lib/stages/10-datasource.js index 3d61bfaa..e2451567 100644 --- a/lib/stages/10-datasource.js +++ b/lib/stages/10-datasource.js @@ -58,18 +58,4 @@ const connect = datasource.createStage('connect', () => { }); return Function.parallel(tasks); -}); - -/** - * "datasource.connect.load_settings" - * Load any possible settings in the database - * - * @author Jelle De Loecker - * @since 1.4.0 - * @version 1.4.0 - * - * @type {Alchemy.Stages.Stage} - */ -const load_settings = connect.createStage('load_settings', () => { - console.log('Should load settings..') }); \ No newline at end of file diff --git a/lib/stages/15-tasks.js b/lib/stages/15-tasks.js new file mode 100644 index 00000000..053be887 --- /dev/null +++ b/lib/stages/15-tasks.js @@ -0,0 +1,27 @@ +/** + * The "tasks" stage + * + * @author Jelle De Loecker + * @since 1.4.0 + * @version 1.4.0 + * + * @type {Alchemy.Stages.Stage} + */ +const tasks = STAGES.createStage('tasks'); + +// Do not start any task stage before the datasources are connected +tasks.dependsOn('datasource.connect'); + +/** + * "tasks.start_service" + * Start the task service + * + * @author Jelle De Loecker + * @since 1.4.0 + * @version 1.4.0 + * + * @type {Alchemy.Stages.Stage} + */ +const start_service = tasks.createStage('start_service', () => { + alchemy.task_service = new Classes.Alchemy.Task.TaskService(); +}); diff --git a/lib/stages/20-settings.js b/lib/stages/20-settings.js new file mode 100644 index 00000000..c2bb1686 --- /dev/null +++ b/lib/stages/20-settings.js @@ -0,0 +1,54 @@ +/** + * The "settings" stage. + * The settings definitions should already be loaded. + * The hard-coded settings too. + * In this stage, we load the settings from the database. + * + * @author Jelle De Loecker + * @since 1.4.0 + * @version 1.4.0 + * + * @type {Alchemy.Stages.Stage} + */ +const settings = STAGES.createStage('settings'); + +// Do not start this stage before the datasources are connected +settings.dependsOn('datasource.connect'); + +/** + * "settings.load" + * Load the settings from the database + * + * @author Jelle De Loecker + * @since 1.4.0 + * @version 1.4.0 + * + * @type {Alchemy.Stages.Stage} + */ +const load = settings.createStage('load', async () => { + + let records = await Model.get('AlchemySetting').find('all'); + + if (!records.length) { + return; + } + + for (let record of records) { + await record.applySetting(false); + } +}); + + +/** + * "datasource.connect.load_settings" + * Load any possible settings in the database + * + * @author Jelle De Loecker + * @since 1.4.0 + * @version 1.4.0 + * + * @type {Alchemy.Stages.Stage} + */ +const perform_actions = settings.createStage('perform_actions', async () => { + await alchemy.system_settings.performAllActions(); +}); \ No newline at end of file diff --git a/lib/stages/20-routes.js b/lib/stages/50-routes.js similarity index 100% rename from lib/stages/20-routes.js rename to lib/stages/50-routes.js diff --git a/lib/stages/30-server.js b/lib/stages/90-server.js similarity index 97% rename from lib/stages/30-server.js rename to lib/stages/90-server.js index 71f85ec6..4f8e51a3 100644 --- a/lib/stages/30-server.js +++ b/lib/stages/90-server.js @@ -275,12 +275,7 @@ const start = server.createStage('start', () => { alchemy.setSetting('network.socket', address); log.info('HTTP server listening on socket file', address); - const set_socketfile_chmod = alchemy.getSetting('network.socketfile_chmod'); - - // Make readable by everyone - if (set_socketfile_chmod) { - libfs.chmodSync(address, set_socketfile_chmod); - } + alchemy.executeSetting('network.socketfile_chmod'); } else { // Get the actual server port alchemy.setSetting('network.port', address.port);