Skip to content

Commit c168b88

Browse files
committed
Rework template tooling as dataclass
1 parent cffd266 commit c168b88

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/stac_auth_proxy/filters/template.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Generate CQL2 filter expressions via Jinja2 templating."""
22

3-
from typing import Annotated, Any
3+
from dataclasses import dataclass, field
44

55
from cql2 import Expr
66
from fastapi import Request
@@ -9,11 +9,18 @@
99
from ..utils.requests import extract_variables
1010

1111

12-
def Template(template_str: str):
12+
@dataclass
13+
class Template:
1314
"""Generate CQL2 filter expressions via Jinja2 templating."""
14-
env = Environment(loader=BaseLoader).from_string(template_str)
1515

16-
async def dependency(request: Request) -> Expr:
16+
template_str: str
17+
env: Environment = field(init=False)
18+
19+
def __post_init__(self):
20+
"""Initialize the Jinja2 environment."""
21+
self.env = Environment(loader=BaseLoader).from_string(self.template_str)
22+
23+
async def __call__(self, request: Request) -> Expr:
1724
"""Render a CQL2 filter expression with the request and auth token."""
1825
# TODO: How to handle the case where auth_token is null?
1926
context = {
@@ -31,9 +38,7 @@ async def dependency(request: Request) -> Expr:
3138
},
3239
"token": request.state.user,
3340
}
34-
cql2_str = env.render(**context).strip()
41+
cql2_str = self.env.render(**context).strip()
3542
cql2_expr = Expr(cql2_str)
3643
cql2_expr.validate()
3744
return cql2_expr
38-
39-
return dependency

0 commit comments

Comments
 (0)