Skip to content

Commit 7c545d2

Browse files
authored
feat: Apply indexing to parameter-values (#50)
1 parent 9574b63 commit 7c545d2

3 files changed

Lines changed: 18 additions & 2 deletions

File tree

src/policyengine_api/api/parameter_values.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from uuid import UUID
1010

1111
from fastapi import APIRouter, Depends, HTTPException
12+
from fastapi_cache.decorator import cache
1213
from sqlmodel import Session, select
1314

1415
from policyengine_api.models import ParameterValue, ParameterValueRead
@@ -18,6 +19,7 @@
1819

1920

2021
@router.get("/", response_model=List[ParameterValueRead])
22+
@cache(expire=3600) # Cache for 1 hour
2123
def list_parameter_values(
2224
parameter_id: UUID | None = None,
2325
policy_id: UUID | None = None,

src/policyengine_api/modal_app.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ def simulate_household_uk(
120120
) -> None:
121121
"""Calculate UK household and write result to database."""
122122
import json
123-
import os
124123
from datetime import datetime, timezone
125124

126125
from rich.console import Console
@@ -246,7 +245,6 @@ def simulate_household_us(
246245
) -> None:
247246
"""Calculate US household and write result to database."""
248247
import json
249-
import os
250248
from datetime import datetime, timezone
251249

252250
from rich.console import Console
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-- Add indexes to parameter_values table for query optimization
2+
-- This migration improves query performance for filtering by parameter_id and policy_id
3+
4+
-- Composite index for the most common query pattern (filtering by both)
5+
CREATE INDEX IF NOT EXISTS idx_parameter_values_parameter_policy
6+
ON parameter_values(parameter_id, policy_id);
7+
8+
-- Single index on policy_id for filtering by policy alone
9+
CREATE INDEX IF NOT EXISTS idx_parameter_values_policy
10+
ON parameter_values(policy_id);
11+
12+
-- Partial index for baseline values (policy_id IS NULL)
13+
-- This optimizes the common "get current law values" query
14+
CREATE INDEX IF NOT EXISTS idx_parameter_values_baseline
15+
ON parameter_values(parameter_id)
16+
WHERE policy_id IS NULL;

0 commit comments

Comments
 (0)