Fix sqlalchemy warning about logbook query being converted from subquery (#71710)

pull/71713/head^2
J. Nick Koston 2022-05-11 21:30:36 -05:00 committed by GitHub
parent 08851d8366
commit 19168227eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 18 deletions

View File

@ -6,7 +6,7 @@ from datetime import datetime as dt
from typing import Any
import sqlalchemy
from sqlalchemy import lambda_stmt, select
from sqlalchemy import lambda_stmt, select, union_all
from sqlalchemy.orm import aliased
from sqlalchemy.sql.expression import literal
from sqlalchemy.sql.lambdas import StatementLambdaElement
@ -118,15 +118,15 @@ def _select_entities_context_ids_sub_query(
entity_ids: list[str],
) -> Select:
"""Generate a subquery to find context ids for multiple entities."""
return (
_select_events_context_id_subquery(start_day, end_day, event_types)
.where(_apply_event_entity_id_matchers(entity_ids))
.union_all(
return select(
union_all(
_select_events_context_id_subquery(start_day, end_day, event_types).where(
_apply_event_entity_id_matchers(entity_ids)
),
select(States.context_id)
.filter((States.last_updated > start_day) & (States.last_updated < end_day))
.where(States.entity_id.in_(entity_ids))
)
.subquery()
.where(States.entity_id.in_(entity_ids)),
).c.context_id
)
@ -183,18 +183,16 @@ def _select_entity_context_ids_sub_query(
entity_id_like: str,
) -> Select:
"""Generate a subquery to find context ids for a single entity."""
return (
_select_events_context_id_subquery(start_day, end_day, event_types)
.where(
Events.event_data.like(entity_id_like)
| EventData.shared_data.like(entity_id_like)
)
.union_all(
return select(
union_all(
_select_events_context_id_subquery(start_day, end_day, event_types).where(
Events.event_data.like(entity_id_like)
| EventData.shared_data.like(entity_id_like)
),
select(States.context_id)
.filter((States.last_updated > start_day) & (States.last_updated < end_day))
.where(States.entity_id == entity_id)
)
.subquery()
.where(States.entity_id == entity_id),
).c.context_id
)