定位信息增加地址解析

This commit is contained in:
stu2not
2026-05-27 17:05:24 +08:00
parent fb11e48584
commit 356e333c81
12 changed files with 281 additions and 8 deletions

View File

@@ -59,6 +59,37 @@ async def _ensure_schedule_suppressed_until_column(conn) -> None:
)
async def _ensure_columns(conn, *, table_name: str, columns: list[tuple[str, str]]) -> None:
for column_name, definition in columns:
result = await conn.execute(
text(
"""
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = :table_name
AND COLUMN_NAME = :column_name
"""
),
{"table_name": table_name, "column_name": column_name},
)
if int(result.scalar() or 0) > 0:
continue
await conn.execute(text(f"ALTER TABLE {table_name} ADD COLUMN {definition}"))
async def _ensure_child_location_address_columns(conn) -> None:
await _ensure_columns(
conn,
table_name="child_location_current",
columns=[
("address", "address VARCHAR(255) NULL AFTER updated_at"),
("address_resolved_at", "address_resolved_at DATETIME NULL AFTER address"),
("address_resolve_status", "address_resolve_status TINYINT NULL AFTER address_resolved_at"),
],
)
async def _ensure_device_family_tables(conn) -> None:
await conn.execute(
text(
@@ -173,6 +204,7 @@ async def init_db():
await conn.run_sync(Base.metadata.create_all)
await _ensure_manual_sleep_mode_column(conn)
await _ensure_schedule_suppressed_until_column(conn)
await _ensure_child_location_address_columns(conn)
await _ensure_device_family_tables(conn)
await engine.dispose()
session_logger.info("system", "database", "数据库表已成功创建")