model->all(); } public function store(UserDTO $userDTO): User { return $this->model->create($userDTO->toArray()); } public function update(int $id, UserDTO $dto, array $fieldsToUpdate): User { $user = User::findOrFail($id); $updateFields = array_intersect_key( $dto->toArray(), array_flip($fieldsToUpdate) ); $user->update($updateFields); return $user->fresh(); } public function delete(int $id): bool { return $this->model->destroy(ids: $id); } public function find(int $id): ?User { return $this->model->findOrFail(id: $id); } public function findByEmail(string $email): ?User { return $this->model->where(column: 'email', operator: $email)->first(); } }