summaryrefslogtreecommitdiff
path: root/services/api/src/trading_api/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/api/src/trading_api/main.py')
-rw-r--r--services/api/src/trading_api/main.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/services/api/src/trading_api/main.py b/services/api/src/trading_api/main.py
new file mode 100644
index 0000000..61cfe36
--- /dev/null
+++ b/services/api/src/trading_api/main.py
@@ -0,0 +1,34 @@
+"""Trading Platform REST API."""
+from contextlib import asynccontextmanager
+
+from fastapi import FastAPI
+
+from shared.config import Settings
+from shared.db import Database
+
+from trading_api.routers import portfolio, orders, strategies
+
+
+@asynccontextmanager
+async def lifespan(app: FastAPI):
+ settings = Settings()
+ app.state.db = Database(settings.database_url)
+ await app.state.db.connect()
+ yield
+ await app.state.db.close()
+
+
+app = FastAPI(
+ title="Trading Platform API",
+ version="0.1.0",
+ lifespan=lifespan,
+)
+
+app.include_router(portfolio.router, prefix="/api/v1/portfolio", tags=["portfolio"])
+app.include_router(orders.router, prefix="/api/v1/orders", tags=["orders"])
+app.include_router(strategies.router, prefix="/api/v1/strategies", tags=["strategies"])
+
+
+@app.get("/health")
+async def health():
+ return {"status": "ok"}