- Fix database path mismatch: download_sample_eyes.py now uses ai_photo_edit.db instead of photoedit.db - Add init_database.py script to initialize DB before eye import - Add AUTO_DOWNLOAD_SAM=true environment variable (default: enabled) - Update entrypoint.sh to: 1. Initialize database first 2. Auto-download SAM model (~375MB) on first startup 3. Then import eyes (now works since DB exists) - Update path detection to work in both Docker and local environments
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Initialize the database before other startup scripts run.
|
|
|
|
This ensures the database exists and has all required tables
|
|
before download_sample_eyes.py tries to use it.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add backend to path - handle both Docker and local environments
|
|
# In Docker: backend is at /app/
|
|
# Locally: backend is at ./backend/
|
|
if Path('/app').exists():
|
|
sys.path.insert(0, '/app')
|
|
else:
|
|
sys.path.insert(0, str(Path(__file__).parent.parent / 'backend'))
|
|
|
|
def main():
|
|
# Import after path setup
|
|
from app.database import engine, Base, init_db
|
|
from app.models import project, user, patch
|
|
|
|
print("Initializing database...")
|
|
|
|
# Create all tables
|
|
init_db()
|
|
|
|
# Verify database was created - check both Docker and local paths
|
|
docker_db_path = Path('/app/data/ai_photo_edit.db')
|
|
local_db_path = Path('./data/ai_photo_edit.db')
|
|
|
|
if docker_db_path.exists():
|
|
print(f"✓ Database initialized at: {docker_db_path}")
|
|
elif local_db_path.exists():
|
|
print(f"✓ Database initialized at: {local_db_path}")
|
|
else:
|
|
print("⚠ Database file not found at expected locations, but tables may still be created")
|
|
|
|
print("Database initialization complete.")
|
|
|
|
if __name__ == '__main__':
|
|
main()
|