feat: add domain layer

- Define Task entity and repository interface
- Define State entity and repository interface
This commit is contained in:
Andres Fabian Patiño Bermudez 2026-05-14 21:32:32 -05:00
parent c539c9e01d
commit 7bf617bd4b
4 changed files with 37 additions and 0 deletions

View File

@ -0,0 +1,5 @@
import type { TaskState } from "../task/task.entity.js";
export interface State {
name: TaskState;
}

View File

@ -0,0 +1,6 @@
import type { State } from "./state.entity.js";
export interface StateRepository {
findAll(): Promise<State[]>;
findByName(name: string): Promise<State | undefined>;
}

View File

@ -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[];
}

View File

@ -0,0 +1,9 @@
import type { Task } from "./task.entity.js";
export interface TaskRepository {
findAll(): Promise<Task[]>;
findById(id: string): Promise<Task | undefined>;
create(task: Task): Promise<Task>;
update(id: string, updates: Partial<Task>): Promise<Task | undefined>;
delete(id: string): Promise<boolean>;
}