feat: seed predefined tags on database initialization

Automatically insert predefined tags when the tags table is empty
during DB init.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-13 05:34:48 +01:00
parent d8b2278491
commit 04db85c688

View File

@@ -4,10 +4,10 @@ import os
from pathlib import Path
from typing import Generator
from sqlalchemy import create_engine
from sqlalchemy import create_engine, text
from sqlalchemy.orm import Session, sessionmaker
from .models import Base
from .models import Base, Tag
# Default database path - relative to project root
@@ -106,9 +106,30 @@ def init_db(db_path: Path | None = None) -> Path:
_engine = engine
_SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# Seed predefined tags if the table is empty
_seed_tags_if_empty(engine)
return db_path
def _seed_tags_if_empty(engine):
"""Insert predefined tags if the tags table is empty."""
from ..scripts.seed_tags import PREDEFINED_TAGS
session = Session(bind=engine)
try:
count = session.execute(text("SELECT COUNT(*) FROM tags")).scalar()
if count == 0:
for tag_name in PREDEFINED_TAGS:
session.add(Tag(nom=tag_name))
session.commit()
except Exception:
session.rollback()
raise
finally:
session.close()
def reset_connection():
"""Reset global connection (useful for testing)."""
global _engine, _SessionLocal