From ae4f497659eb74fab4520db46afc440e7a186188 Mon Sep 17 00:00:00 2001 From: ReLoia Date: Sun, 12 Apr 2026 23:08:30 +0200 Subject: [PATCH] refactor: remove address field and related logic --- app/api/proxy/router.py | 2 +- app/models/service.py | 1 - app/repositories/proxy.py | 3 +-- app/services/proxy/{types.py => models.py} | 1 - pyproject.toml | 1 + tests/api/test_proxy.py | 12 +++++------- uv.lock | 2 ++ 7 files changed, 10 insertions(+), 12 deletions(-) rename app/services/proxy/{types.py => models.py} (84%) diff --git a/app/api/proxy/router.py b/app/api/proxy/router.py index c013aac..29007ca 100644 --- a/app/api/proxy/router.py +++ b/app/api/proxy/router.py @@ -60,7 +60,7 @@ async def create_proxy_handler(payload: ProxyCreateInput): return await create_proxy( proxy_port=payload.proxy_port, name=payload.name, - service={"address": payload.service.address, "port": payload.service.port}, + service={"port": payload.service.port}, code=payload.code, ) diff --git a/app/models/service.py b/app/models/service.py index 5d67d28..019bf37 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -4,5 +4,4 @@ from pydantic import BaseModel, ConfigDict, Field class ServiceEndpointDocument(BaseModel): model_config = ConfigDict(extra="forbid") - address: str = Field(..., description="Upstream service address") port: int = Field(..., description="Upstream service port") diff --git a/app/repositories/proxy.py b/app/repositories/proxy.py index 0ed5072..74aedf4 100644 --- a/app/repositories/proxy.py +++ b/app/repositories/proxy.py @@ -4,11 +4,11 @@ from typing import Any from motor.motor_asyncio import AsyncIOMotorCollection from pymongo import ReturnDocument -from services.proxy.models import ServiceConfig from core.mongodb import get_database from models.proxy import ProxyDocument, ProxyUpdateInput from models.service import ServiceEndpointDocument +from services.proxy.models import ServiceConfig COLLECTION_NAME = "proxies" @@ -47,7 +47,6 @@ async def create_proxy( name=name, code=code, service=ServiceEndpointDocument( - address=service["address"], port=service["port"], ), created_at=now, diff --git a/app/services/proxy/types.py b/app/services/proxy/models.py similarity index 84% rename from app/services/proxy/types.py rename to app/services/proxy/models.py index 548505d..531e1e9 100644 --- a/app/services/proxy/types.py +++ b/app/services/proxy/models.py @@ -2,5 +2,4 @@ from typing import TypedDict class ServiceConfig(TypedDict): - name: str port: int diff --git a/pyproject.toml b/pyproject.toml index 9eb71e7..0932997 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ dependencies = [ "fastapi[standard]>=0.135.3", "motor>=3.7.1", "passlib[bcrypt]>=1.7.4", + "pydantic>=2.12.5", "pydantic-settings>=2.13.1", "pyyaml>=6.0.3", "redis>=7.4.0", diff --git a/tests/api/test_proxy.py b/tests/api/test_proxy.py index a7683c7..b6783b1 100644 --- a/tests/api/test_proxy.py +++ b/tests/api/test_proxy.py @@ -13,14 +13,13 @@ def make_proxy_document( proxy_port: int, name: str = "svc", code: str = "proxy-code", - address: str = "127.0.0.1", port: int = 9000, ) -> ProxyDocument: return ProxyDocument( proxy_port=proxy_port, name=name, code=code, - service=ServiceEndpointDocument(address=address, port=port), + service=ServiceEndpointDocument(port=port), ) @@ -87,7 +86,7 @@ def test_create_proxy_returns_409_on_port_conflict(client, monkeypatch: object): "proxy_port": 3671, "name": "new", "code": "abc", - "service": {"address": "localhost", "port": 8080}, + "service": {"port": 8080}, }, ) @@ -117,7 +116,6 @@ def test_create_proxy_returns_created_document(client, monkeypatch: object): proxy_port=proxy_port, name=name, code=code, - address=str(service["address"]), port=int(service["port"]), ) @@ -142,7 +140,7 @@ def test_create_proxy_returns_created_document(client, monkeypatch: object): "proxy_port": 4040, "name": "edge", "code": "def proxy_handler():\n return 'ok'\n", - "service": {"address": "service.local", "port": 8181}, + "service": {"port": 8181}, }, ) @@ -151,7 +149,7 @@ def test_create_proxy_returns_created_document(client, monkeypatch: object): assert captured == { "proxy_port": 4040, "name": "edge", - "service": {"address": "service.local", "port": 8181}, + "service": {"port": 8181}, "code": "def proxy_handler():\n return 'ok'\n", } @@ -208,7 +206,7 @@ def test_create_proxy_returns_422_when_code_validation_fails( "proxy_port": 4000, "name": "broken", "code": "invalid-code", - "service": {"address": "service.local", "port": 9000}, + "service": {"port": 9000}, }, ) diff --git a/uv.lock b/uv.lock index 3aa63d3..d153d54 100644 --- a/uv.lock +++ b/uv.lock @@ -854,6 +854,7 @@ dependencies = [ { name = "fastapi", extra = ["standard"] }, { name = "motor" }, { name = "passlib", extra = ["bcrypt"] }, + { name = "pydantic" }, { name = "pydantic-settings" }, { name = "pyyaml" }, { name = "redis" }, @@ -871,6 +872,7 @@ requires-dist = [ { name = "fastapi", extras = ["standard"], specifier = ">=0.135.3" }, { name = "motor", specifier = ">=3.7.1" }, { name = "passlib", extras = ["bcrypt"], specifier = ">=1.7.4" }, + { name = "pydantic", specifier = ">=2.12.5" }, { name = "pydantic-settings", specifier = ">=2.13.1" }, { name = "pyyaml", specifier = ">=6.0.3" }, { name = "redis", specifier = ">=7.4.0" },