diff --git a/app/db/models.py b/app/db/models.py index d3bcb8f..ddd2cad 100644 --- a/app/db/models.py +++ b/app/db/models.py @@ -52,6 +52,7 @@ class DBRegion(Base): id = Column(Integer, primary_key=True, index=True) name = Column(String, unique=True, index=True) + label = Column(String) postgres_host = Column(String) postgres_port = Column(Integer, default=5432) postgres_admin_user = Column(String) diff --git a/app/main.py b/app/main.py index 58623e7..b367999 100644 --- a/app/main.py +++ b/app/main.py @@ -256,8 +256,8 @@ async def custom_swagger_ui_html(): return get_swagger_ui_html( openapi_url="/openapi.json", title="API Documentation", - swagger_js_url="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.9.0/swagger-ui-bundle.js", - swagger_css_url="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.9.0/swagger-ui.css", + swagger_js_url="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.31.0/swagger-ui-bundle.js", + swagger_css_url="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.31.0/swagger-ui.css", oauth2_redirect_url="/oauth2-redirect", init_oauth={ "usePkceWithAuthorizationCodeGrant": False, diff --git a/app/migrations/versions/20260130_202835_646f3aa3b394_add_label_to_regions.py b/app/migrations/versions/20260130_202835_646f3aa3b394_add_label_to_regions.py new file mode 100644 index 0000000..b6c7c15 --- /dev/null +++ b/app/migrations/versions/20260130_202835_646f3aa3b394_add_label_to_regions.py @@ -0,0 +1,30 @@ +"""add label to regions + +Revision ID: 646f3aa3b394 +Revises: 0ba9c30d601d +Create Date: 2026-01-30 20:28:35.668898+00:00 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '646f3aa3b394' +down_revision: Union[str, None] = '0ba9c30d601d' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('regions', sa.Column('label', sa.String(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('regions', 'label') + # ### end Alembic commands ### \ No newline at end of file diff --git a/app/schemas/models.py b/app/schemas/models.py index d2ef5eb..51e8cc9 100644 --- a/app/schemas/models.py +++ b/app/schemas/models.py @@ -74,6 +74,7 @@ class APITokenResponse(APITokenBase): class RegionBase(BaseModel): name: str + label: str postgres_host: str postgres_port: int = 5432 postgres_admin_user: str @@ -88,6 +89,7 @@ class RegionCreate(RegionBase): class RegionUpdate(BaseModel): name: str + label: str postgres_host: str postgres_port: int postgres_admin_user: str @@ -101,6 +103,7 @@ class RegionUpdate(BaseModel): class RegionResponse(BaseModel): id: int name: str + label: str postgres_host: str litellm_api_url: str is_active: bool diff --git a/frontend/src/app/admin/regions/page.tsx b/frontend/src/app/admin/regions/page.tsx index 9b60d8f..9a68711 100644 --- a/frontend/src/app/admin/regions/page.tsx +++ b/frontend/src/app/admin/regions/page.tsx @@ -45,6 +45,7 @@ interface Team { interface Region { id: string; name: string; + label: string; postgres_host: string; postgres_port: number; postgres_admin_user: string; @@ -65,6 +66,7 @@ export default function RegionsPage() { const [selectedRegionForTeams, setSelectedRegionForTeams] = useState(null); const [newRegion, setNewRegion] = useState({ name: '', + label: '', postgres_host: '', postgres_port: 5432, postgres_admin_user: '', @@ -120,6 +122,7 @@ export default function RegionsPage() { setIsAddingRegion(false); setNewRegion({ name: '', + label: '', postgres_host: '', postgres_port: 5432, postgres_admin_user: '', @@ -167,6 +170,7 @@ export default function RegionsPage() { mutationFn: async (regionData: Region) => { type UpdateData = { name: string; + label: string; postgres_host: string; postgres_port: number; postgres_admin_user: string; @@ -179,6 +183,7 @@ export default function RegionsPage() { const updateData: UpdateData = { name: regionData.name, + label: regionData.label, postgres_host: regionData.postgres_host, postgres_port: regionData.postgres_port, postgres_admin_user: regionData.postgres_admin_user, @@ -371,6 +376,15 @@ export default function RegionsPage() { required /> +
+ + setNewRegion({ ...newRegion, label: e.target.value })} + placeholder="us-east-1" + required + /> +
-
+
Name + Label Postgres Host Type Status @@ -478,6 +493,7 @@ export default function RegionsPage() { {paginatedData.map((region) => ( {region.name} + {region.label} {region.postgres_host} @@ -551,6 +567,15 @@ export default function RegionsPage() { required />
+
+ + setEditingRegion({ ...editingRegion, label: e.target.value })} + placeholder="US East 1" + required + /> +
-
+