Files
TimeTracker/docker/test-db.py
2025-08-27 14:37:18 +02:00

59 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""
Simple database test script for TimeTracker
This script tests database connectivity and shows initialization status.
"""
import os
import sys
from sqlalchemy import create_engine, text, inspect
def test_database():
"""Test database connectivity and show status"""
url = os.getenv("DATABASE_URL", "")
if not url.startswith("postgresql"):
print("No PostgreSQL database configured")
return
print(f"Testing database connection to: {url}")
try:
# Test connection
engine = create_engine(url, pool_pre_ping=True)
with engine.connect() as conn:
result = conn.execute(text("SELECT version()"))
version = result.fetchone()[0]
print(f"✓ Database connection successful")
print(f" PostgreSQL version: {version}")
# Check tables
inspector = inspect(engine)
existing_tables = inspector.get_table_names()
required_tables = ['users', 'projects', 'time_entries', 'settings']
print(f"\nDatabase tables:")
for table in required_tables:
if table in existing_tables:
print(f"{table}")
else:
print(f"{table} (missing)")
missing_tables = [table for table in required_tables if table not in existing_tables]
if missing_tables:
print(f"\nDatabase is NOT fully initialized")
print(f"Missing tables: {missing_tables}")
return False
else:
print(f"\n✓ Database is fully initialized")
return True
except Exception as e:
print(f"✗ Database connection failed: {e}")
return False
if __name__ == "__main__":
success = test_database()
sys.exit(0 if success else 1)