first commit

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-25 20:36:00 +03:00
co-authored by Cursor
commit bbff3cb10b
35 changed files with 2054 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
#!/bin/sh
set -e
echo "Waiting for database..."
python - <<'PY'
import asyncio
import os
import sys
from sqlalchemy import text
from sqlalchemy.ext.asyncio import create_async_engine
async def wait_db(retries: int = 40) -> None:
url = os.environ["DATABASE_URL"]
engine = create_async_engine(url)
for i in range(retries):
try:
async with engine.connect() as conn:
await conn.execute(text("SELECT 1"))
await engine.dispose()
print("Database is ready")
return
except Exception as exc: # noqa: BLE001
print(f"DB not ready ({i + 1}/{retries}): {exc}")
await asyncio.sleep(1)
await engine.dispose()
sys.exit(1)
asyncio.run(wait_db())
PY
echo "Running migrations..."
alembic upgrade head
echo "Bootstrapping admin..."
python -m app.bootstrap
echo "Starting application..."
exec "$@"