<?php
namespace Domain\Repository;
use Domain\Entity\Task;
interface TaskRepositoryInterface
{
public function find(int $id): ?Task;
public function findById(int $id): ?Task;
public function findByUuid(string $uuid): ?Task;
public function findAll(array $filters = [], int $limit = 50, int $offset = 0): array;
public function findByStatus(string $status, int $limit = 50): array;
public function findByAssignee(string $assignee, int $limit = 50): array;
public function findByCreator(string $createdBy, int $limit = 50): array;
public function findSubtasks(int $parentTaskId): array;
public function save(Task $task): int;
public function update(Task $task): bool;
public function delete(int $id): bool;
public function count(array $filters = []): int;
public function getStatistics(): array;
}