X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/49e0d83d5d8e3008373ae99ae3f37788f4b9a80a..30cef4d5fdfd804616506b28d5caad8d2b2385c4:/nominatim/db/sqlalchemy_types.py diff --git a/nominatim/db/sqlalchemy_types.py b/nominatim/db/sqlalchemy_types.py index f5ec82bd..f31966cd 100644 --- a/nominatim/db/sqlalchemy_types.py +++ b/nominatim/db/sqlalchemy_types.py @@ -7,7 +7,8 @@ """ Custom types for SQLAlchemy. """ -from typing import Callable, Any +from typing import Callable, Any, cast +import sys import sqlalchemy as sa from sqlalchemy import types @@ -16,7 +17,7 @@ from nominatim.typing import SaColumn, SaBind #pylint: disable=all -class Geometry(types.UserDefinedType[Any]): +class Geometry(types.UserDefinedType): # type: ignore[type-arg] """ Simplified type decorator for PostGIS geometry. This type only supports geometries in 4326 projection. """ @@ -33,9 +34,9 @@ class Geometry(types.UserDefinedType[Any]): def bind_processor(self, dialect: 'sa.Dialect') -> Callable[[Any], str]: def process(value: Any) -> str: if isinstance(value, str): - return 'SRID=4326;' + value + return value - return 'SRID=4326;' + value.to_wkt() + return cast(str, value.to_wkt()) return process @@ -47,10 +48,10 @@ class Geometry(types.UserDefinedType[Any]): def bind_expression(self, bindvalue: SaBind) -> SaColumn: - return sa.func.ST_GeomFromText(bindvalue, type_=self) + return sa.func.ST_GeomFromText(bindvalue, sa.text('4326'), type_=self) - class comparator_factory(types.UserDefinedType.Comparator): + class comparator_factory(types.UserDefinedType.Comparator): # type: ignore[type-arg] def intersects(self, other: SaColumn) -> 'sa.Operators': return self.op('&&')(other)