diff --git a/app/api/auth/router.py b/app/api/auth/router.py index c02379a..1f6dacd 100644 --- a/app/api/auth/router.py +++ b/app/api/auth/router.py @@ -1,15 +1,16 @@ from datetime import UTC, datetime from typing import Annotated +from fastapi import APIRouter, Depends, HTTPException, Response, status + from core.security import ( AuthContext, create_access_token, get_auth_context, verify_password, ) -from db.auth import get_user_by_username, revoke_token -from fastapi import APIRouter, Depends, HTTPException, Response, status from models.auth import LoginInput, TokenResponse +from repositories.auth import get_user_by_username, revoke_token router = APIRouter( prefix="/auth", diff --git a/app/api/proxy/router.py b/app/api/proxy/router.py index 0f662be..c013aac 100644 --- a/app/api/proxy/router.py +++ b/app/api/proxy/router.py @@ -1,16 +1,17 @@ +from fastapi import APIRouter, Depends, HTTPException, status + from core.security import require_authenticated_user -from db.proxy import ( +from models.proxy import ProxyCreateInput, ProxyUpdateInput +from repositories.proxy import ( create_proxy, delete_proxy, get_proxy_by_port, update_proxy, ) -from db.proxy import ( +from repositories.proxy import ( list_proxies as list_proxy_documents, ) -from fastapi import APIRouter, Depends, HTTPException, status -from models.proxy import ProxyCreateInput, ProxyUpdateInput -from utils.proxy.validator import ProxyCodeValidationError, validate_proxy_code +from services.proxy.validator import ProxyCodeValidationError, validate_proxy_code router = APIRouter( prefix="/proxy", diff --git a/app/core/security.py b/app/core/security.py index bb7502a..9e7e310 100644 --- a/app/core/security.py +++ b/app/core/security.py @@ -5,13 +5,14 @@ from uuid import uuid4 from authlib.jose import jwt # type: ignore from authlib.jose.errors import JoseError # type: ignore -from core.config import settings -from db.auth import get_user_by_username, is_token_revoked from fastapi import Depends, HTTPException, status from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer -from models.auth import AccessTokenPayload, AuthUserDocument from passlib.context import CryptContext +from core.config import settings +from models.auth import AccessTokenPayload, AuthUserDocument +from repositories.auth import get_user_by_username, is_token_revoked + pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") bearer_scheme = HTTPBearer(auto_error=False) diff --git a/app/db/__init__.py b/app/integrations/__init__.py similarity index 100% rename from app/db/__init__.py rename to app/integrations/__init__.py diff --git a/app/utils/docker/__init__.py b/app/integrations/docker/__init__.py similarity index 59% rename from app/utils/docker/__init__.py rename to app/integrations/docker/__init__.py index 524a2c9..2483ddd 100644 --- a/app/utils/docker/__init__.py +++ b/app/integrations/docker/__init__.py @@ -1,11 +1,11 @@ -from utils.docker.compose import ( +from integrations.docker.compose import ( find_docker_compose, get_all_services, get_services, get_visible_folders, ) -from utils.docker.editor import change_port -from utils.docker.models import DockerService +from integrations.docker.editor import change_port +from integrations.docker.models import DockerService __all__ = [ "DockerService", diff --git a/app/utils/docker/compose.py b/app/integrations/docker/compose.py similarity index 94% rename from app/utils/docker/compose.py rename to app/integrations/docker/compose.py index e6157e5..c77aa5c 100644 --- a/app/utils/docker/compose.py +++ b/app/integrations/docker/compose.py @@ -2,8 +2,8 @@ from pathlib import Path import yaml -from utils.docker.models import DockerService -from utils.docker.ports import _get_service_port +from integrations.docker.models import DockerService +from integrations.docker.ports import _get_service_port COMPOSE_NAMES = ( "compose.yml", diff --git a/app/utils/docker/editor.py b/app/integrations/docker/editor.py similarity index 90% rename from app/utils/docker/editor.py rename to app/integrations/docker/editor.py index 59ef637..dbd952a 100644 --- a/app/utils/docker/editor.py +++ b/app/integrations/docker/editor.py @@ -2,8 +2,8 @@ from pathlib import Path import yaml -from utils.docker.compose import find_docker_compose -from utils.docker.ports import _get_port_index, _replace_port_in_mapping +from integrations.docker.compose import find_docker_compose +from integrations.docker.ports import _get_port_index, _replace_port_in_mapping def _backup_path_for(compose_path: Path) -> Path: diff --git a/app/utils/docker/models.py b/app/integrations/docker/models.py similarity index 100% rename from app/utils/docker/models.py rename to app/integrations/docker/models.py diff --git a/app/utils/docker/ports.py b/app/integrations/docker/ports.py similarity index 100% rename from app/utils/docker/ports.py rename to app/integrations/docker/ports.py diff --git a/app/main.py b/app/main.py index eaa50d9..671a4b6 100644 --- a/app/main.py +++ b/app/main.py @@ -1,14 +1,15 @@ from contextlib import asynccontextmanager +from fastapi import FastAPI + from api.auth.router import router as auth_router from api.proxy.router import router as proxy_router from core.config import settings from core.mongodb import close_mongodb, init_mongodb from core.redis import close_redis, init_redis from core.security import hash_password -from db.auth import ensure_auth_indexes, ensure_single_account -from db.proxy import ensure_proxy_indexes -from fastapi import FastAPI +from repositories.auth import ensure_auth_indexes, ensure_single_account +from repositories.proxy import ensure_proxy_indexes @asynccontextmanager diff --git a/app/utils/proxy/__init__.py b/app/repositories/__init__.py similarity index 100% rename from app/utils/proxy/__init__.py rename to app/repositories/__init__.py diff --git a/app/db/auth.py b/app/repositories/auth.py similarity index 99% rename from app/db/auth.py rename to app/repositories/auth.py index 1269e42..c6dc35f 100644 --- a/app/db/auth.py +++ b/app/repositories/auth.py @@ -2,9 +2,10 @@ from collections.abc import Mapping from datetime import UTC, datetime from typing import Any +from motor.motor_asyncio import AsyncIOMotorCollection + from core.mongodb import get_database from models.auth import AuthUserDocument -from motor.motor_asyncio import AsyncIOMotorCollection USERS_COLLECTION_NAME = "auth_users" REVOKED_COLLECTION_NAME = "revoked_tokens" diff --git a/app/db/proxy.py b/app/repositories/proxy.py similarity index 98% rename from app/db/proxy.py rename to app/repositories/proxy.py index ad9e9be..0ed5072 100644 --- a/app/db/proxy.py +++ b/app/repositories/proxy.py @@ -2,12 +2,13 @@ from collections.abc import Mapping from datetime import UTC, datetime 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 motor.motor_asyncio import AsyncIOMotorCollection -from pymongo import ReturnDocument -from utils.proxy.types import ServiceConfig COLLECTION_NAME = "proxies" diff --git a/app/services/__init__.py b/app/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/services/proxy/__init__.py b/app/services/proxy/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/utils/proxy/manager.py b/app/services/proxy/manager.py similarity index 72% rename from app/utils/proxy/manager.py rename to app/services/proxy/manager.py index 58ad605..e9e564c 100644 --- a/app/utils/proxy/manager.py +++ b/app/services/proxy/manager.py @@ -1,4 +1,4 @@ -from utils.proxy.types import ServiceConfig +from services.proxy.models import ServiceConfig async def create_proxy( diff --git a/app/utils/proxy/types.py b/app/services/proxy/types.py similarity index 100% rename from app/utils/proxy/types.py rename to app/services/proxy/types.py diff --git a/app/utils/proxy/validator.py b/app/services/proxy/validator.py similarity index 100% rename from app/utils/proxy/validator.py rename to app/services/proxy/validator.py diff --git a/tests/api/test_proxy.py b/tests/api/test_proxy.py index 27962f6..a7683c7 100644 --- a/tests/api/test_proxy.py +++ b/tests/api/test_proxy.py @@ -3,7 +3,7 @@ import importlib from core.security import get_auth_context, require_authenticated_user from models.proxy import ProxyDocument from models.service import ServiceEndpointDocument -from utils.proxy.validator import ProxyCodeValidationError +from services.proxy.validator import ProxyCodeValidationError proxy_router_module = importlib.import_module("api.proxy.router")