diff --git a/src/govoplan_addresses/backend/db/models.py b/src/govoplan_addresses/backend/db/models.py index c76f743..b20b7ea 100644 --- a/src/govoplan_addresses/backend/db/models.py +++ b/src/govoplan_addresses/backend/db/models.py @@ -252,6 +252,7 @@ class ContactPointQualityDecision(Base, TimestampMixin): "effective_until", ), Index("ix_addresses_quality_state", "tenant_id", "state", "effective_until"), + Index("ix_addresses_quality_created_by", "created_by_account_id"), ) id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid) @@ -269,7 +270,7 @@ class ContactPointQualityDecision(Base, TimestampMixin): evidence_ref: Mapped[str | None] = mapped_column(String(1000), nullable=True) effective_from: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, index=True) effective_until: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True, index=True) - created_by_account_id: Mapped[str | None] = mapped_column(String(36), nullable=True, index=True) + created_by_account_id: Mapped[str | None] = mapped_column(String(36), nullable=True) metadata_: Mapped[dict[str, Any]] = mapped_column("metadata", JSON, default=dict, nullable=False) contact: Mapped[Contact] = relationship(back_populates="quality_decisions") diff --git a/src/govoplan_addresses/backend/migrations/versions/b4c6d7e8f9a0_contact_quality_and_merges.py b/src/govoplan_addresses/backend/migrations/versions/b4c6d7e8f9a0_contact_quality_and_merges.py index 19d1eb6..cf50313 100644 --- a/src/govoplan_addresses/backend/migrations/versions/b4c6d7e8f9a0_contact_quality_and_merges.py +++ b/src/govoplan_addresses/backend/migrations/versions/b4c6d7e8f9a0_contact_quality_and_merges.py @@ -134,7 +134,7 @@ def upgrade() -> None: ("ix_addresses_contact_point_quality_decisions_state", ["state"]), ("ix_addresses_contact_point_quality_decisions_effective_from", ["effective_from"]), ("ix_addresses_contact_point_quality_decisions_effective_until", ["effective_until"]), - ("ix_addresses_contact_point_quality_decisions_created_by_account_id", ["created_by_account_id"]), + ("ix_addresses_quality_created_by", ["created_by_account_id"]), ("ix_addresses_quality_current", ["tenant_id", "contact_id", "channel", "contact_point_id", "effective_until"]), ("ix_addresses_quality_state", ["tenant_id", "state", "effective_until"]), ): diff --git a/tests/test_migrations.py b/tests/test_migrations.py index 8478fb0..e55fbab 100644 --- a/tests/test_migrations.py +++ b/tests/test_migrations.py @@ -7,11 +7,22 @@ from pathlib import Path from alembic.runtime.migration import MigrationContext from sqlalchemy import create_engine, inspect +from govoplan_addresses.backend.db.models import Base from govoplan_addresses.backend.manifest import get_manifest from govoplan_core.db.migrations import migrate_database class AddressesMigrationTests(unittest.TestCase): + def test_schema_identifiers_fit_postgresql_limit(self) -> None: + overlong_indexes = sorted( + index.name + for table in Base.metadata.tables.values() + if table.name.startswith("addresses_") + for index in table.indexes + if index.name and len(index.name) > 63 + ) + self.assertEqual([], overlong_indexes) + def test_fresh_database_reaches_import_profile_head(self) -> None: with tempfile.TemporaryDirectory(prefix="govoplan-addresses-migration-") as directory: url = f"sqlite:///{Path(directory) / 'addresses.db'}"