From f9a221d8cfb57555081e62045ee5b277d856a8b2 Mon Sep 17 00:00:00 2001 From: HerrHase Date: Sun, 21 Apr 2024 16:51:37 +0200 Subject: [PATCH] adding --- packages/runner/_db.ts | 2 +- packages/runner/_docket.ts | 24 +++++++++++++++++++++++- packages/runner/_run.ts | 16 ++++++++++++---- packages/runner/_state.ts | 14 ++++++++++++++ 4 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 packages/runner/_state.ts diff --git a/packages/runner/_db.ts b/packages/runner/_db.ts index 46ee37a..fa7285c 100644 --- a/packages/runner/_db.ts +++ b/packages/runner/_db.ts @@ -24,7 +24,7 @@ class Db { this.data = { 'slug': this.slug, 'date_created_at': dayjs().toISOString(), - 'date_run_at': dayjs().toISOString() + 'date_run_started_at': dayjs().toISOString() } db.data.runs.push(run) diff --git a/packages/runner/_docket.ts b/packages/runner/_docket.ts index 87d3919..299add8 100644 --- a/packages/runner/_docket.ts +++ b/packages/runner/_docket.ts @@ -1,3 +1,5 @@ +import State from './_state.ts' + /** * Docket * @@ -17,7 +19,9 @@ class Docket { private data: object private options: object private db: object - + private states: array + + /** * * @@ -27,6 +31,7 @@ class Docket { public constructor(config: object, db: object) { this.config = config this.db = db + this.states = [] } public getData() { @@ -48,6 +53,23 @@ class Docket { public getDb(): object { return this.db } + + public addState(value: State) { + this.states.push(value) + } + + public hasState(value: State) { + let result = false + + for (let index in this.states) { + if (this.states[index] == value) { + result = true + break + } + } + + return result + } } export default Docket diff --git a/packages/runner/_run.ts b/packages/runner/_run.ts index 8620036..da5846a 100644 --- a/packages/runner/_run.ts +++ b/packages/runner/_run.ts @@ -4,6 +4,7 @@ import Docket from './_docket.ts' import { resolveActionClass } from './helpers/resolver.ts' import logger from './helpers/logger.ts' +import State from './_state.ts' /** * run through a single config, getting each action with config @@ -18,6 +19,11 @@ async function run(config: object) { let db = new Db(config.slug) let docket = new Docket(config, db) + + // update db + await db.update({ + 'date_started_at': dayjs().toISOString() + }) logger(config.slug).info('has started') @@ -46,10 +52,12 @@ async function run(config: object) { logger(config.slug).info('has finished') - // update db - await db.update({ - 'date_run_at': dayjs().toISOString() - }) + // update db only state FINISHED is set + if (docket.hasState(State.FINISHED)) { + await db.update({ + 'date_finished_at': dayjs().toISOString() + }) + } return docket } diff --git a/packages/runner/_state.ts b/packages/runner/_state.ts new file mode 100644 index 0000000..220b062 --- /dev/null +++ b/packages/runner/_state.ts @@ -0,0 +1,14 @@ +/** + * + * + * @author Björn Hase + * @license http://opensource.org/licenses/MIT The MIT License + * @link https://git.node001.net/HerrHase/super-hog.git + * + */ + +enum State { + FINISHED +} + +export default State