66import structlog
77from fastapi import APIRouter , Depends , FastAPI
88from fastapi .responses import StreamingResponse
9- from codegate import __version__
109
10+ from codegate import __version__
11+ from codegate .api .v1 import v1
1112from codegate .dashboard .post_processing import (
1213 parse_get_alert_conversation ,
1314 parse_messages_in_conversations ,
2021dashboard_router = APIRouter (tags = ["Dashboard" ])
2122db_reader = None
2223
24+
2325def get_db_reader ():
2426 global db_reader
2527 if db_reader is None :
2628 db_reader = DbReader ()
2729 return db_reader
2830
31+
2932def fetch_latest_version () -> str :
3033 url = "https://api.github.com/repos/stacklok/codegate/releases/latest"
31- headers = {
32- "Accept" : "application/vnd.github+json" ,
33- "X-GitHub-Api-Version" : "2022-11-28"
34- }
34+ headers = {"Accept" : "application/vnd.github+json" , "X-GitHub-Api-Version" : "2022-11-28" }
3535 response = requests .get (url , headers = headers , timeout = 5 )
3636 response .raise_for_status ()
3737 data = response .json ()
3838 return data .get ("tag_name" , "unknown" )
3939
40+
4041@dashboard_router .get ("/dashboard/messages" )
4142def get_messages (db_reader : DbReader = Depends (get_db_reader )) -> List [Conversation ]:
4243 """
@@ -72,17 +73,18 @@ async def stream_sse():
7273 """
7374 return StreamingResponse (generate_sse_events (), media_type = "text/event-stream" )
7475
76+
7577@dashboard_router .get ("/dashboard/version" )
7678def version_check ():
7779 try :
7880 latest_version = fetch_latest_version ()
7981
8082 # normalize the versions as github will return them with a 'v' prefix
81- current_version = __version__ .lstrip ('v' )
82- latest_version_stripped = latest_version .lstrip ('v' )
83+ current_version = __version__ .lstrip ("v" )
84+ latest_version_stripped = latest_version .lstrip ("v" )
8385
8486 is_latest : bool = latest_version_stripped == current_version
85-
87+
8688 return {
8789 "current_version" : current_version ,
8890 "latest_version" : latest_version_stripped ,
@@ -95,15 +97,15 @@ def version_check():
9597 "current_version" : __version__ ,
9698 "latest_version" : "unknown" ,
9799 "is_latest" : None ,
98- "error" : "An error occurred while fetching the latest version"
100+ "error" : "An error occurred while fetching the latest version" ,
99101 }
100102 except Exception as e :
101103 logger .error (f"Unexpected error: { str (e )} " )
102104 return {
103105 "current_version" : __version__ ,
104106 "latest_version" : "unknown" ,
105107 "is_latest" : None ,
106- "error" : "An unexpected error occurred"
108+ "error" : "An unexpected error occurred" ,
107109 }
108110
109111
@@ -113,6 +115,7 @@ def generate_openapi():
113115
114116 # Include your defined router
115117 app .include_router (dashboard_router )
118+ app .include_router (v1 , prefix = "/api/v1" , tags = ["CodeGate API" ])
116119
117120 # Generate OpenAPI JSON
118121 openapi_schema = app .openapi ()
0 commit comments