base.py 672 B

123456789101112131415161718192021222324252627282930
  1. from __future__ import annotations
  2. from abc import ABC, abstractmethod
  3. from dataclasses import dataclass, field
  4. from typing import Any
  5. from bom_assistant.session.models import NormalizedParams
  6. @dataclass
  7. class SearchResult:
  8. count: int
  9. page: int
  10. page_size: int
  11. items: list[dict[str, Any]]
  12. error: str | None = None
  13. class SupplierAdapter(ABC):
  14. def __init__(self, api_token: str | None = None) -> None:
  15. self.api_token = api_token
  16. @abstractmethod
  17. def search(
  18. self,
  19. category_id: int,
  20. params: NormalizedParams,
  21. filters: dict[str, Any] | None = None,
  22. page: int = 1,
  23. ) -> SearchResult: ...