From 7bf617bd4b5b46fa7d22674d518be5599e236937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andres=20Patin=CC=83o?= <97bermudez.andres@gmail.com> Date: Thu, 14 May 2026 21:32:32 -0500 Subject: [PATCH] feat: add domain layer - Define Task entity and repository interface - Define State entity and repository interface --- src/domain/state/state.entity.ts | 5 +++++ src/domain/state/state.repository.ts | 6 ++++++ src/domain/task/task.entity.ts | 17 +++++++++++++++++ src/domain/task/task.repository.ts | 9 +++++++++ 4 files changed, 37 insertions(+) create mode 100644 src/domain/state/state.entity.ts create mode 100644 src/domain/state/state.repository.ts create mode 100644 src/domain/task/task.entity.ts create mode 100644 src/domain/task/task.repository.ts diff --git a/src/domain/state/state.entity.ts b/src/domain/state/state.entity.ts new file mode 100644 index 0000000..978e999 --- /dev/null +++ b/src/domain/state/state.entity.ts @@ -0,0 +1,5 @@ +import type { TaskState } from "../task/task.entity.js"; + +export interface State { + name: TaskState; +} diff --git a/src/domain/state/state.repository.ts b/src/domain/state/state.repository.ts new file mode 100644 index 0000000..c2864f5 --- /dev/null +++ b/src/domain/state/state.repository.ts @@ -0,0 +1,6 @@ +import type { State } from "./state.entity.js"; + +export interface StateRepository { + findAll(): Promise; + findByName(name: string): Promise; +} diff --git a/src/domain/task/task.entity.ts b/src/domain/task/task.entity.ts new file mode 100644 index 0000000..27a432f --- /dev/null +++ b/src/domain/task/task.entity.ts @@ -0,0 +1,17 @@ +export type TaskState = "new" | "active" | "resolved" | "closed"; + +export interface StateEntry { + state: TaskState; + date: string; +} + +export interface Task { + id: string; + title: string; + description: string; + dueDate: string; + completed: boolean; + deletedAt: Date | null; + stateHistory: StateEntry[]; + notes: string[]; +} diff --git a/src/domain/task/task.repository.ts b/src/domain/task/task.repository.ts new file mode 100644 index 0000000..6878904 --- /dev/null +++ b/src/domain/task/task.repository.ts @@ -0,0 +1,9 @@ +import type { Task } from "./task.entity.js"; + +export interface TaskRepository { + findAll(): Promise; + findById(id: string): Promise; + create(task: Task): Promise; + update(id: string, updates: Partial): Promise; + delete(id: string): Promise; +}