first commit
This commit is contained in:
106
api/scripts/init_database.py
Executable file
106
api/scripts/init_database.py
Executable file
@@ -0,0 +1,106 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Database Initialization Script.
|
||||
|
||||
This script initializes all database tables in Appwrite.
|
||||
Run this script once to set up the database schema before running the application.
|
||||
|
||||
Usage:
|
||||
python scripts/init_database.py
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
# Add project root to path
|
||||
project_root = Path(__file__).parent.parent
|
||||
sys.path.insert(0, str(project_root))
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from app.services.database_init import init_database
|
||||
from app.utils.logging import get_logger
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
logger = get_logger(__file__)
|
||||
|
||||
|
||||
def main():
|
||||
"""Initialize database tables."""
|
||||
print("=" * 60)
|
||||
print("Code of Conquest - Database Initialization")
|
||||
print("=" * 60)
|
||||
print()
|
||||
|
||||
# Verify environment variables are set
|
||||
required_vars = [
|
||||
'APPWRITE_ENDPOINT',
|
||||
'APPWRITE_PROJECT_ID',
|
||||
'APPWRITE_API_KEY',
|
||||
'APPWRITE_DATABASE_ID'
|
||||
]
|
||||
|
||||
missing_vars = [var for var in required_vars if not os.getenv(var)]
|
||||
if missing_vars:
|
||||
print("❌ ERROR: Missing required environment variables:")
|
||||
for var in missing_vars:
|
||||
print(f" - {var}")
|
||||
print()
|
||||
print("Please ensure your .env file is configured correctly.")
|
||||
sys.exit(1)
|
||||
|
||||
print("✓ Environment variables loaded")
|
||||
print(f" Endpoint: {os.getenv('APPWRITE_ENDPOINT')}")
|
||||
print(f" Project: {os.getenv('APPWRITE_PROJECT_ID')}")
|
||||
print(f" Database: {os.getenv('APPWRITE_DATABASE_ID')}")
|
||||
print()
|
||||
|
||||
# Initialize database
|
||||
print("Initializing database tables...")
|
||||
print()
|
||||
|
||||
try:
|
||||
results = init_database()
|
||||
|
||||
print()
|
||||
print("=" * 60)
|
||||
print("Initialization Results")
|
||||
print("=" * 60)
|
||||
print()
|
||||
|
||||
success_count = 0
|
||||
failed_count = 0
|
||||
|
||||
for table_name, success in results.items():
|
||||
if success:
|
||||
print(f"✓ {table_name}: SUCCESS")
|
||||
success_count += 1
|
||||
else:
|
||||
print(f"✗ {table_name}: FAILED")
|
||||
failed_count += 1
|
||||
|
||||
print()
|
||||
print(f"Total: {success_count} succeeded, {failed_count} failed")
|
||||
print()
|
||||
|
||||
if failed_count > 0:
|
||||
print("⚠️ Some tables failed to initialize. Check logs for details.")
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("✓ All tables initialized successfully!")
|
||||
print()
|
||||
print("You can now start the application.")
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Database initialization failed", error=str(e))
|
||||
print()
|
||||
print(f"❌ ERROR: {str(e)}")
|
||||
print()
|
||||
print("Check logs for details.")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user