Skip to content

Commit 9e31cc3

Browse files
enobayramDanCardin
authored andcommitted
Replace volatility_map with a classmethod on FunctionVolatility
1 parent 7ced6f0 commit 9e31cc3

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/sqlalchemy_declarative_extensions/dialects/postgresql/function.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,17 @@ class FunctionVolatility(enum.Enum):
2121
STABLE = "STABLE"
2222
IMMUTABLE = "IMMUTABLE"
2323

24+
@classmethod
25+
def from_provolatile(cls, provolatile: str) -> FunctionVolatility:
26+
"""Convert a `pg_proc.provolatile` value to a `FunctionVolatility` enum."""
27+
if provolatile == "v":
28+
return cls.VOLATILE
29+
if provolatile == "s":
30+
return cls.STABLE
31+
if provolatile == "i":
32+
return cls.IMMUTABLE
33+
raise ValueError(f"Invalid volatility: {provolatile}")
34+
2435

2536
def normalize_arg(arg: str) -> str:
2637
parts = arg.strip().split(maxsplit=1)

src/sqlalchemy_declarative_extensions/dialects/postgresql/query.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -217,11 +217,6 @@ def get_procedures_postgresql(connection: Connection) -> Sequence[BaseProcedure]
217217

218218
def get_functions_postgresql(connection: Connection) -> Sequence[BaseFunction]:
219219
functions = []
220-
volatility_map = {
221-
"v": FunctionVolatility.VOLATILE,
222-
"s": FunctionVolatility.STABLE,
223-
"i": FunctionVolatility.IMMUTABLE,
224-
}
225220

226221
for f in connection.execute(functions_query).fetchall():
227222
name = f.name
@@ -233,7 +228,7 @@ def get_functions_postgresql(connection: Connection) -> Sequence[BaseFunction]:
233228
parameters=(
234229
[p.strip() for p in f.parameters.split(",")] if f.parameters else None
235230
),
236-
volatility=volatility_map[f.volatility],
231+
volatility=FunctionVolatility.from_provolatile(f.volatility),
237232
name=name,
238233
definition=definition,
239234
language=language,

0 commit comments

Comments
 (0)