- Backend: FastAPI + SQLAlchemy + Celery (Python 3.11+) - Frontend: Vue 3 + TypeScript + Pinia + Tailwind - Admin Frontend: separate Vue 3 app for management - Docker Compose: 9 services orchestration - Specs: design prototypes, memory system PRD, product roadmap Cleanup performed: - Removed temporary debug scripts from backend root - Removed deprecated admin_app.py (embedded UI) - Removed duplicate docs from admin-frontend - Updated .gitignore for Vite cache and egg-info
30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
import asyncio
|
|
import os
|
|
import sys
|
|
|
|
# Add backend to path
|
|
sys.path.append(os.path.join(os.getcwd()))
|
|
|
|
from sqlalchemy import text
|
|
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession
|
|
from app.core.config import settings
|
|
|
|
async def add_column():
|
|
engine = create_async_engine(settings.database_url)
|
|
async_session = async_sessionmaker(engine, expire_on_commit=False)
|
|
async with async_session() as session:
|
|
try:
|
|
print("Adding config_json column to providers table...")
|
|
await session.execute(text("ALTER TABLE providers ADD COLUMN IF NOT EXISTS config_json JSONB DEFAULT '{}'::jsonb"))
|
|
await session.commit()
|
|
print("Successfully added config_json column.")
|
|
except Exception as e:
|
|
print(f"Error adding column: {e}")
|
|
await session.rollback()
|
|
|
|
if __name__ == "__main__":
|
|
import asyncio
|
|
if sys.platform == "win32":
|
|
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
|
|
asyncio.run(add_column())
|