diff --git a/deps.json b/deps.json index 8b82685..c41e4b2 100644 --- a/deps.json +++ b/deps.json @@ -3,6 +3,7 @@ "1" : "uviconrn", "2" : "fastapi", "3" : "pydantic", - "4" : "sqlalchemy" + "4" : "pydantic-settings", + "5" : "sqlalchemy" } } \ No newline at end of file diff --git a/src/.env b/src/.env new file mode 100644 index 0000000..a7750ea --- /dev/null +++ b/src/.env @@ -0,0 +1,7 @@ +DATABASE_URL=sqlite:///./users.db +API_TITLE=Users Microservice +API_VERSION=1.0.0 +HOST=0.0.0.0 +PORT=8000 +RELOAD=true +LOG_LEVEL=info \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..a497821 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,3 @@ +from core.config import settings + +__all__ = ["settings"] \ No newline at end of file diff --git a/src/__pycache__/main.cpython-314.pyc b/src/__pycache__/main.cpython-314.pyc index 6ebcf94..b3693bf 100644 Binary files a/src/__pycache__/main.cpython-314.pyc and b/src/__pycache__/main.cpython-314.pyc differ diff --git a/src/core/__pycache__/config.cpython-314.pyc b/src/core/__pycache__/config.cpython-314.pyc new file mode 100644 index 0000000..6c3e40f Binary files /dev/null and b/src/core/__pycache__/config.cpython-314.pyc differ diff --git a/src/core/config.py b/src/core/config.py new file mode 100644 index 0000000..f7a7e6f --- /dev/null +++ b/src/core/config.py @@ -0,0 +1,29 @@ +from pydantic_settings import BaseSettings +from pydantic import Field + +class Settings(BaseSettings): + """Configuración de la aplicación""" + + # Base de datos + database_url: str = Field( + default="sqlite:///./test.db", + description="URL de conexión a la base de datos" + ) + + # API + api_title: str = "Users Microservice" + api_version: str = "1.0.0" + api_description: str = "Microservicio de gestión de usuarios" + + # Server + host: str = "0.0.0.0" + port: int = 8000 + reload: bool = True + log_level: str = "info" + + class Config: + env_file = ".env" + case_sensitive = False + + +ConfSettings = Settings() \ No newline at end of file diff --git a/src/infrastructure/adapters/persistence/__pycache__/db.cpython-314.pyc b/src/infrastructure/adapters/persistence/__pycache__/db.cpython-314.pyc index 461d49f..55c050a 100644 Binary files a/src/infrastructure/adapters/persistence/__pycache__/db.cpython-314.pyc and b/src/infrastructure/adapters/persistence/__pycache__/db.cpython-314.pyc differ diff --git a/src/infrastructure/adapters/persistence/db.py b/src/infrastructure/adapters/persistence/db.py index c61c6f9..dbd23e3 100644 --- a/src/infrastructure/adapters/persistence/db.py +++ b/src/infrastructure/adapters/persistence/db.py @@ -1,11 +1,12 @@ from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, declarative_base +from core.config import ConfSettings DATABASE_URL = "sqlite:///./users.db" engine = create_engine( - DATABASE_URL, - connect_args={"check_same_thread": False} + ConfSettings.database_url, + connect_args={"check_same_thread": False} if "sqlite" in ConfSettings.database_url else {} ) SessionLocal = sessionmaker( diff --git a/src/infrastructure/api/users/__pycache__/app.cpython-314.pyc b/src/infrastructure/api/users/__pycache__/app.cpython-314.pyc index 73e70c0..a351659 100644 Binary files a/src/infrastructure/api/users/__pycache__/app.cpython-314.pyc and b/src/infrastructure/api/users/__pycache__/app.cpython-314.pyc differ diff --git a/src/infrastructure/api/users/__pycache__/root.cpython-314.pyc b/src/infrastructure/api/users/__pycache__/root.cpython-314.pyc index 2963db1..480cafb 100644 Binary files a/src/infrastructure/api/users/__pycache__/root.cpython-314.pyc and b/src/infrastructure/api/users/__pycache__/root.cpython-314.pyc differ diff --git a/src/infrastructure/api/users/app.py b/src/infrastructure/api/users/app.py index 020143c..ef92ced 100644 --- a/src/infrastructure/api/users/app.py +++ b/src/infrastructure/api/users/app.py @@ -1,7 +1,10 @@ from fastapi import FastAPI +from core.config import ConfSettings from infrastructure.api.users.router import router def create_app() -> FastAPI: - app = FastAPI(title="Users service") + app = FastAPI(title=ConfSettings.api_title, + version=ConfSettings.api_version, + description=ConfSettings.api_description) app.include_router(router) return app \ No newline at end of file diff --git a/src/infrastructure/api/users/root.py b/src/infrastructure/api/users/root.py index bf8b1bc..8caac67 100644 --- a/src/infrastructure/api/users/root.py +++ b/src/infrastructure/api/users/root.py @@ -1,10 +1,16 @@ from fastapi import APIRouter +import platform router = APIRouter() @router.get("/") def root(): + uname = platform.uname() return { + "machine": { + "OS" : f"{uname.system} {uname.release}", + "Arch": uname.machine + }, "Status": "Running", "Docs": "/docs" } \ No newline at end of file diff --git a/src/main.py b/src/main.py index a3b7108..aa15ff6 100644 --- a/src/main.py +++ b/src/main.py @@ -1,4 +1,5 @@ from infrastructure.api.users.app import create_app +from core.config import ConfSettings app = create_app() @@ -6,11 +7,11 @@ def run(): import uvicorn uvicorn.run( "main:app", - host="0.0.0.0", - port=8000, - reload=True, - log_level="info", + host=ConfSettings.host, + port=ConfSettings.port, + reload=ConfSettings.reload, + log_level=ConfSettings.log_level, ) if __name__ == "__main__": - run() + run() \ No newline at end of file diff --git a/src/users.db b/src/users.db index a321460..fdae28b 100644 Binary files a/src/users.db and b/src/users.db differ