Keep address migration identifiers PostgreSQL-safe
This commit is contained in:
@@ -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")
|
||||
|
||||
+1
-1
@@ -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"]),
|
||||
):
|
||||
|
||||
@@ -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'}"
|
||||
|
||||
Reference in New Issue
Block a user