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)) + } +}