"""NasApiBackend — 외부 스토리지(맥미니4TB / NAS Docker API) stub (plan D-1).

★ 미프로비전 = 503. silent fallback 금지(다른 백엔드로 자동 우회 X). 실 프로비전 후
D-3 에서 활성화. infra_inventory.md 갱신(Update Rule) 이 선행이다.
"""

from __future__ import annotations

import os
from collections.abc import AsyncIterator

from .base import StatResult, StorageBackend, StorageNotConfigured

_MSG = "NasApiBackend 미구성 — 외부 스토리지 프로비전 후 활성(D-3). silent fallback 없음."


class NasApiBackend(StorageBackend):
    is_local = False

    def __init__(self, base_url: str | None = None) -> None:
        self._base_url = base_url

    def local_path(self, rel_path: str) -> os.PathLike[str] | None:
        return None

    async def stat(self, rel_path: str) -> StatResult:
        raise StorageNotConfigured(_MSG)

    async def stream(
        self, rel_path: str, *, start: int | None = None, end: int | None = None
    ) -> AsyncIterator[bytes]:
        raise StorageNotConfigured(_MSG)
        yield b""  # 도달 불가 — async generator 형태 유지용(호출부 `async for` 계약 일치).
