1 """States schema repairs."""
3 from __future__
import annotations
5 from typing
import TYPE_CHECKING
7 from ...db_schema
import StateAttributes, States
9 correct_db_schema_precision,
10 correct_db_schema_utf8,
11 validate_db_schema_precision,
12 validate_table_schema_has_correct_collation,
13 validate_table_schema_supports_utf8,
17 from ...
import Recorder
19 TABLE_UTF8_COLUMNS = {
20 States: (States.state,),
21 StateAttributes: (StateAttributes.shared_attrs,),
26 """Do some basic checks for common schema errors caused by manual migration."""
27 schema_errors: set[str] = set()
28 for table, columns
in TABLE_UTF8_COLUMNS.items():
31 for table
in (States, StateAttributes):
38 schema_errors: set[str],
40 """Correct issues detected by validate_db_schema."""
41 for table
in (States, StateAttributes):
None correct_db_schema_precision(Recorder instance, type[DeclarativeBase] table_object, set[str] schema_errors)
set[str] validate_table_schema_has_correct_collation(Recorder instance, type[DeclarativeBase] table_object)
None correct_db_schema_utf8(Recorder instance, type[DeclarativeBase] table_object, set[str] schema_errors)
set[str] validate_db_schema_precision(Recorder instance, type[DeclarativeBase] table_object)
set[str] validate_table_schema_supports_utf8(Recorder instance, type[DeclarativeBase] table_object, tuple[InstrumentedAttribute,...] columns)
set[str] validate_db_schema(Recorder instance)
None correct_db_schema(Recorder instance, set[str] schema_errors)