$dto->email->value(), 'passwordHash' => $dto->passwordHash, ]); return $this->toDomain($model); } public function find(int $id): ?User { $model = UserModel::find($id); if ($model === null) { return null; } return $this->toDomain($model); } public function findByEmail(EmailAddress $email): ?User { $model = UserModel::query() ->where('email', $email->value()) ->first(); if ($model === null) { return null; } return $this->toDomain($model); } private function toDomain(UserModel $model): User { return new User( id: $model->id, email: new EmailAddress($model->email), passwordHash: $model->passwordHash, ); } }