Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 32 additions & 1 deletion admin/apis/v1/config.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
from fastapi import APIRouter, Depends
import asyncio
from fastapi import APIRouter, Depends, Request
from pydantic import BaseModel
from apis import security
from config import settings
from models.connection import Connection
from models.user import TeamUser
from utils.exception import ServiceError
from services import user as user_service


api = APIRouter(prefix="/config", tags=["config"])


Expand Down Expand Up @@ -51,3 +54,31 @@ async def setup_script(team_user: TeamUser = Depends(security.get_current_team_u
token=team_user.secret_key, server_url=settings.server_url
)
}


@api.get("/stats")
async def get_stats(
request: Request, team_user: TeamUser = Depends(security.get_current_team_user)
):
team = team_user.team

total_connections_query = Connection.filter(team_id=team.id).count()
active_connections_query = Connection.filter(
team_id=team.id, status="active"
).count()
team_members_count = TeamUser.filter(team_id=team.id).count()

total_connections, active_connections, team_members = await asyncio.gather(
total_connections_query, active_connections_query, team_members_count
)

return {
"team_stats": {
"total_connections": total_connections,
"active_connections": active_connections,
"team_members": team_members,
},
"system_stats": {
"server_uptime": request.app.state.server_start_time,
},
}
4 changes: 3 additions & 1 deletion admin/main.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from datetime import datetime, UTC
import os
from typing import Annotated
from fastapi import Cookie, FastAPI, Request
Expand Down Expand Up @@ -25,6 +26,7 @@
async def lifespan(app: FastAPI):
# connect to database
await connect_db()
app.state.server_start_time = datetime.now(tz=UTC)
yield
# disconnect all db connections
await disconnect_db()
Expand Down Expand Up @@ -95,7 +97,7 @@ async def render_index_template_for_instance_settings_routes(
@app.get("/{team}/connections")
@app.get("/{team}/users")
@app.get("/{team}/my-account")
@app.get("/{team}/settings")
@app.get("/{team}/email-settings")
async def render_index_template_for_team_routes(
request: Request,
team: str,
Expand Down
2 changes: 1 addition & 1 deletion admin/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"@sveltejs/vite-plugin-svelte": "^2.5.3",
"@tsconfig/svelte": "^5.0.4",
"autoprefixer": "^10.4.19",
"bits-ui": "^0.22.0",
"clsx": "^2.1.0",
"formsnap": "^0.4.4",
"highlight.js": "^11.9.0",
Expand All @@ -34,7 +35,6 @@
"vite": "^5.4.12"
},
"dependencies": {
"bits-ui": "^0.15.1",
"lucide-svelte": "0.352.0",
"moment": "^2.30.1",
"svelte-legos": "^0.2.2",
Expand Down
Loading