Source code for codegen_database.ext.postgis

from __future__ import annotations

from dataclasses import dataclass
from typing import TYPE_CHECKING

from codegen_database.extension import CodegenDatabaseExtension
from codegen_database.pg_extension import (
    PGExtension,
    register_pg_extension,
)
from codegen_database.types.postgis import STDADDR, StdAddr

if TYPE_CHECKING:
    from sqlalchemy import MetaData

__all__ = [
    "STDADDR",
    "PGExtension",
    "PostGISExtension",
    "StdAddr",
    "register_pg_extension",
]

_POSTGIS_EXTENSION = PGExtension("postgis", cascade=True)
_ADDRESS_STANDARDIZER_EXTENSION = PGExtension("address_standardizer")


[docs] @dataclass(frozen=True, eq=True) class PostGISExtension(CodegenDatabaseExtension): name: str = "postgis" postgis: bool = False address_standardizer: bool = True geography: bool = False
[docs] def configure_metadata(self, metadata: MetaData) -> None: if self.postgis: register_pg_extension(metadata, _POSTGIS_EXTENSION) if self.address_standardizer: register_pg_extension(metadata, _ADDRESS_STANDARDIZER_EXTENSION) if self.geography and not self.postgis: register_pg_extension(metadata, _POSTGIS_EXTENSION)