Coverage for middle_layer/solicit/domain_layer/entities/array_configuration.py: 90.91%
22 statements
« prev ^ index » next coverage.py v7.10.5, created at 2026-03-09 06:13 +0000
« prev ^ index » next coverage.py v7.10.5, created at 2026-03-09 06:13 +0000
1# Copyright 2024 Associated Universities, Inc.
2#
3# This file is part of Telescope Time Allocation Tools (TTAT).
4#
5# TTAT is free software: you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation, either version 3 of the License, or
8# any later version.
9#
10# TTAT is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with TTAT. If not, see <https://www.gnu.org/licenses/>.
17# pyright: reportImportCycles=false
19import typing
21from sqlalchemy import ForeignKey
22from sqlalchemy.orm import Mapped, mapped_column, relationship
24from common.domain_layer.entities.base import Base
26if typing.TYPE_CHECKING:
27 from solicit.domain_layer.entities.capability import Facility
28 from solicit.domain_layer.entities.solicitation_facility_capability import SolicitationFacilityCapability
31class ArrayConfiguration(Base):
32 __tablename__: str = "array_configurations"
34 array_configuration_id: Mapped[int] = mapped_column(primary_key=True)
35 facility_id: Mapped[int] = mapped_column(ForeignKey("facilities.facility_id", ondelete="CASCADE"))
36 facility: Mapped["Facility"] = relationship(back_populates="array_configurations")
37 array_configuration_name: Mapped[str] = mapped_column(nullable=False)
38 array_configuration_configurations: Mapped[list["ArrayConfigurationConfiguration"]] = relationship(
39 "ArrayConfigurationConfiguration",
40 back_populates="array_configuration",
41 cascade="all, delete",
42 passive_deletes=True,
43 )
46class ArrayConfigurationConfiguration(Base):
47 __tablename__: str = "array_configuration_configurations"
49 array_configuration_configuration_id: Mapped[int] = mapped_column(primary_key=True)
50 array_configuration_id: Mapped[int] = mapped_column(
51 ForeignKey("array_configurations.array_configuration_id", ondelete="CASCADE")
52 )
53 array_configuration: Mapped[ArrayConfiguration] = relationship(back_populates="array_configuration_configurations")
54 solicitation_facility_capability_id: Mapped[int] = mapped_column(
55 ForeignKey("solicitation_facility_capabilities.solicitation_facility_capability_id", ondelete="CASCADE")
56 )
57 solicitation_facility_capability: Mapped["SolicitationFacilityCapability"] = relationship(
58 back_populates="array_configuration_configurations"
59 )
60 baseline_min: Mapped[float] = mapped_column(nullable=False)
61 baseline_max: Mapped[float] = mapped_column(nullable=False)