Compare commits

..

2 Commits

Author SHA1 Message Date
3502a7ffa8 fix: respect dev mode in entrypoint database initialization
- Update entrypoint.sh to check DEPLOYMENT_MODE before initializing database
- DEV mode: calls initialize_dev_database() which resets the database
- PROD mode: calls initialize_database() which preserves existing data
- Adds clear logging to show which mode is being used

This ensures the dev database is properly reset on container startup,
matching the behavior of the lifespan function in api/main.py.
2025-11-02 15:30:11 -05:00
68d9f241e1 fix: use closure to capture db_path in lifespan context manager
- Fix lifespan function to access db_path from create_app scope via closure
- Prevents "no such table: jobs" error by ensuring database initialization runs
- Previous version tried to access app.state.db_path before it was set

The issue was that app.state is set after FastAPI instantiation, but the
lifespan function needs the db_path during startup. Using closure allows
the lifespan function to capture db_path from the create_app function scope.
2025-11-02 15:24:29 -05:00
2 changed files with 17 additions and 5 deletions

View File

@@ -134,15 +134,15 @@ def create_app(
from tools.deployment_config import is_dev_mode, get_db_path
from api.database import initialize_dev_database, initialize_database
# Startup
# Startup - use closure to access db_path from create_app scope
if is_dev_mode():
# Initialize dev database (reset unless PRESERVE_DEV_DATA=true)
dev_db_path = get_db_path(app.state.db_path)
dev_db_path = get_db_path(db_path)
initialize_dev_database(dev_db_path)
log_dev_mode_startup_warning()
else:
# Ensure production database schema exists
initialize_database(app.state.db_path)
initialize_database(db_path)
yield

View File

@@ -36,9 +36,21 @@ fi
echo "✅ Environment variables validated"
# Step 1: Initialize database
# Step 1: Initialize database (respecting dev/prod mode)
echo "📊 Initializing database..."
python -c "from api.database import initialize_database; initialize_database('data/jobs.db')"
python -c "
from tools.deployment_config import is_dev_mode, get_db_path
from api.database import initialize_dev_database, initialize_database
db_path = 'data/jobs.db'
if is_dev_mode():
print(' 🔧 DEV mode detected - initializing dev database')
dev_db_path = get_db_path(db_path)
initialize_dev_database(dev_db_path)
else:
print(' 🏭 PROD mode - initializing production database')
initialize_database(db_path)
"
echo "✅ Database initialized"
# Step 2: Merge and validate configuration