Skip to content

Commit 4e9f814

Browse files
authored
Move method to domain. (open-edge-platform#915)
1 parent 962b6ac commit 4e9f814

9 files changed

Lines changed: 21 additions & 21 deletions

File tree

application/backend/app/api/error_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
from sqlalchemy.exc import IntegrityError
1111

1212
from domain.errors import (
13+
DatasetNotFoundError,
1314
ResourceAlreadyExistsError,
1415
ResourceInUseError,
1516
ResourceNotFoundError,
1617
ResourceUpdateConflictError,
1718
)
1819
from runtime.errors import (
19-
DatasetNotFoundError,
2020
PipelineNotActiveError,
2121
PipelineProjectMismatchError,
2222
SinkConnectionError,

application/backend/app/dependencies.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
from domain.db.engine import get_session
1313
from domain.dispatcher import ConfigChangeDispatcher
14+
from domain.errors import DatasetNotFoundError
1415
from domain.repositories.frame import FrameRepository
1516
from domain.repositories.processor import ProcessorRepository
1617
from domain.repositories.project import ProjectRepository
@@ -28,7 +29,6 @@
2829
from domain.services.schemas.dataset import DatasetsListSchema
2930
from domain.services.schemas.device import AvailableDeviceSchema
3031
from runtime.core.components.validators.sink_connection import SinkConnectionValidator
31-
from runtime.errors import DatasetNotFoundError
3232
from runtime.pipeline_manager import PipelineManager
3333
from runtime.services.frame import FrameService
3434
from runtime.services.license import LicenseService

application/backend/app/domain/errors.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,7 @@ def __init__(self, resource_type: ResourceType, resource_id: str, field: str, me
8585
msg = message or f"{resource_type.value} with ID {resource_id} cannot change immutable field '{field}'."
8686
super().__init__(resource_type, resource_id, msg)
8787
self.field = field
88+
89+
90+
class DatasetNotFoundError(Exception):
91+
"""Exception raised when a dataset is not found."""

application/backend/app/runtime/services/dataset_discovery.py renamed to application/backend/app/domain/services/dataset_discovery.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
from pathlib import Path
66
from uuid import UUID, uuid5
77

8+
from domain.errors import DatasetNotFoundError
89
from domain.services.schemas.base import Pagination
910
from domain.services.schemas.dataset import DatasetSchema, DatasetsListSchema
10-
from runtime.errors import DatasetNotFoundError
1111
from runtime.services.image_thumbnail import generate_image_thumbnail
1212
from settings import get_settings
1313

application/backend/app/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
from dependencies import LicenseServiceDep
2626
from domain.db.engine import get_session_factory, run_db_migrations
2727
from domain.dispatcher import ConfigChangeDispatcher
28+
from domain.errors import DatasetNotFoundError
29+
from domain.services.dataset_discovery import scan_datasets
2830
from domain.services.schemas.base import Pagination
2931
from domain.services.schemas.dataset import DatasetsListSchema
3032
from domain.services.schemas.health import HealthCheckSchema, HealthStatus
3133
from runtime.components import DefaultComponentFactory
32-
from runtime.errors import DatasetNotFoundError
3334
from runtime.pipeline_manager import PipelineManager
34-
from runtime.services.dataset_discovery import scan_datasets
3535
from runtime.services.device import list_available_devices
3636
from runtime.webrtc.manager import WebRTCManager
3737
from runtime.webrtc.sdp_handler import SDPHandler

application/backend/app/runtime/core/components/factories/reader.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
import logging
55

6+
from domain.errors import DatasetNotFoundError
7+
from domain.services.dataset_discovery import get_first_dataset_path, resolve_dataset_path
68
from domain.services.schemas.reader import (
79
ImagesFolderConfig,
810
ReaderConfig,
@@ -16,8 +18,6 @@
1618
from runtime.core.components.readers.noop_reader import NoOpReader
1719
from runtime.core.components.readers.usb_camera_reader import UsbCameraReader
1820
from runtime.core.components.readers.video_file import VideoFileReader
19-
from runtime.errors import DatasetNotFoundError
20-
from runtime.services.dataset_discovery import get_first_dataset_path, resolve_dataset_path
2121
from settings import get_settings
2222

2323
logger = logging.getLogger(__name__)

application/backend/app/runtime/errors.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,3 @@ class SourceMismatchError(PipelineManagerError):
2424

2525
class SinkConnectionError(Exception):
2626
"""Exception raised when a resource fails connectivity validation."""
27-
28-
29-
class DatasetNotFoundError(Exception):
30-
"""Exception raised when a dataset is not found."""

application/backend/tests/unit/api/test_dependencies_dataset_path.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import pytest
88

99
from dependencies import get_dataset_path_by_id
10-
from runtime.errors import DatasetNotFoundError
10+
from domain.errors import DatasetNotFoundError
1111

1212

1313
def test_get_dataset_path_by_id_returns_path() -> None:

application/backend/tests/unit/runtime/services/test_dataset_discovery.py renamed to application/backend/tests/unit/domain/services/test_dataset_discovery.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
import pytest
88

9-
from runtime.errors import DatasetNotFoundError
10-
from runtime.services.dataset_discovery import (
9+
from domain.errors import DatasetNotFoundError
10+
from domain.services.dataset_discovery import (
1111
DATASET_NS,
1212
_get_first_image,
1313
get_first_dataset_path,
@@ -71,7 +71,7 @@ def test_returns_none_when_template_dataset_path_is_missing(self, tmp_path: Path
7171

7272
class TestGetFirstImage:
7373
def test_returns_first_supported_image_in_sorted_order(self, tmp_path: Path, monkeypatch) -> None:
74-
monkeypatch.setattr("runtime.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
74+
monkeypatch.setattr("domain.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
7575

7676
(tmp_path / "z_image.png").touch()
7777
expected = tmp_path / "a_image.jpg"
@@ -83,7 +83,7 @@ def test_returns_first_supported_image_in_sorted_order(self, tmp_path: Path, mon
8383
assert first_image == expected
8484

8585
def test_returns_none_when_no_supported_images_exist(self, tmp_path: Path, monkeypatch) -> None:
86-
monkeypatch.setattr("runtime.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
86+
monkeypatch.setattr("domain.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
8787
(tmp_path / "README.txt").touch()
8888

8989
first_image = _get_first_image(tmp_path)
@@ -95,8 +95,8 @@ class TestScanDatasets:
9595
def test_builds_id_to_path_mapping_and_pagination(self, tmp_path: Path, monkeypatch) -> None:
9696
dataset_dir = tmp_path / "aquarium"
9797
dataset_dir.mkdir()
98-
monkeypatch.setattr("runtime.services.dataset_discovery.generate_image_thumbnail", lambda _path: "thumb")
99-
monkeypatch.setattr("runtime.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
98+
monkeypatch.setattr("domain.services.dataset_discovery.generate_image_thumbnail", lambda _path: "thumb")
99+
monkeypatch.setattr("domain.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
100100
(dataset_dir / "image.jpg").touch()
101101

102102
datasets, dataset_paths = scan_datasets(tmp_path)
@@ -115,9 +115,9 @@ def test_sets_thumbnail_from_first_supported_image(self, tmp_path: Path, monkeyp
115115
(dataset_dir / "README.txt").write_text("info")
116116
first_image = dataset_dir / "0001.jpg"
117117
first_image.touch()
118-
monkeypatch.setattr("runtime.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
118+
monkeypatch.setattr("domain.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
119119
monkeypatch.setattr(
120-
"runtime.services.dataset_discovery.generate_image_thumbnail",
120+
"domain.services.dataset_discovery.generate_image_thumbnail",
121121
lambda image_path: f"thumb::{image_path.name}",
122122
)
123123

@@ -130,7 +130,7 @@ def test_sets_thumbnail_none_when_no_supported_images(self, tmp_path: Path, monk
130130
dataset_dir = tmp_path / "aquarium"
131131
dataset_dir.mkdir()
132132
(dataset_dir / "README.txt").write_text("no images")
133-
monkeypatch.setattr("runtime.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
133+
monkeypatch.setattr("domain.services.dataset_discovery.settings.supported_extensions", {".jpg", ".png"})
134134

135135
datasets, _ = scan_datasets(tmp_path)
136136

0 commit comments

Comments
 (0)