Skip to content

Commit 132abc2

Browse files
committed
feat: add skip_if_exists to seed function to not re-seed if data is already in dev db.
1 parent bda234c commit 132abc2

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

core/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@
3434
@asynccontextmanager
3535
async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
3636
"""
37-
Application lifespan event handler to initialize the database and lexicon.
37+
Application lifespan event handler to seed data in development mode.
3838
"""
3939
if settings.get_enum("MODE") == "development":
4040
from transfers.seed import seed_all
4141

42-
seed_all(10)
42+
seed_all(10, skip_if_exists=True)
4343

4444
register_routes(app)
4545
yield

transfers/seed.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ def get_terms_by_category(s, category_name: str) -> list[LexiconTerm]:
5353
)
5454
)
5555

56+
5657
def ensure_seed_prereqs() -> None:
5758
"""Ensure that lexicon and parameter data exist before seeding."""
5859
from core.initializers import init_lexicon, init_parameter
@@ -66,9 +67,16 @@ def ensure_seed_prereqs() -> None:
6667
if not has_parameter:
6768
init_parameter()
6869

69-
def seed_all(n: int = 5):
70+
71+
def seed_data_exists() -> bool:
72+
with session_ctx() as s:
73+
return s.scalar(select(Contact.id).limit(1)) is not None
74+
75+
76+
def seed_all(n: int = 5, skip_if_exists: bool = False):
7077
"""Seed roughly `n` of each main entity and connect them."""
71-
# Ensure lexicon and parameter exist
78+
if skip_if_exists and seed_data_exists():
79+
return
7280
ensure_seed_prereqs()
7381
new_mexico_bounds = [
7482
(36.9, -106.6), # Taos area

0 commit comments

Comments
 (0)