From fb02f28465da19efbcc31394f6457a64f00db216 Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Sun, 9 Apr 2023 22:56:09 +0200 Subject: [PATCH] init record notion --- src/modules/record/interfaces/recordable.ts | 7 +++++++ src/modules/record/models/task-record.ts | 22 +++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/modules/record/interfaces/recordable.ts create mode 100644 src/modules/record/models/task-record.ts diff --git a/src/modules/record/interfaces/recordable.ts b/src/modules/record/interfaces/recordable.ts new file mode 100644 index 0000000..d98bbc8 --- /dev/null +++ b/src/modules/record/interfaces/recordable.ts @@ -0,0 +1,7 @@ +export interface Recordable { + id: string + taskId: string + start: Date + end?: Date + stepRecords: Record +} diff --git a/src/modules/record/models/task-record.ts b/src/modules/record/models/task-record.ts new file mode 100644 index 0000000..e9e0e58 --- /dev/null +++ b/src/modules/record/models/task-record.ts @@ -0,0 +1,22 @@ +import type { Recordable } from '../interfaces/recordable' + +export class TaskRecord implements Recordable { + public start: Date = new Date() + public end: Date | undefined = undefined + public stepRecords: Record = {} + + public constructor( + public readonly id: string, + public readonly taskId: string + ) {} + + public get duration(): number | null { + if (!this.end) { + return null + } + + const durationMilliseconds = this.end.getTime() - this.start.getTime() + + return Math.round(durationMilliseconds / (1000 * 60)) + } +}