feat: add Redis support and update service/proxy models
Build and Push to Registry / build (push) Successful in 13s
Build and Push to Registry / build (push) Successful in 13s
This commit is contained in:
@@ -7,6 +7,7 @@ dependencies = [
|
|||||||
"fastapi[standard]>=0.135.3",
|
"fastapi[standard]>=0.135.3",
|
||||||
"motor>=3.7.1",
|
"motor>=3.7.1",
|
||||||
"pydantic-settings>=2.13.1",
|
"pydantic-settings>=2.13.1",
|
||||||
|
"redis>=7.4.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.ruff.lint]
|
[tool.ruff.lint]
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ class Settings(BaseSettings):
|
|||||||
|
|
||||||
MONGODB_URI: str
|
MONGODB_URI: str
|
||||||
MONGODB_DB_NAME: str
|
MONGODB_DB_NAME: str
|
||||||
|
REDIS_URL: str
|
||||||
|
|
||||||
|
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
@@ -19,4 +19,4 @@ async def ensure_mongodb_available() -> None:
|
|||||||
client = mongodb.client
|
client = mongodb.client
|
||||||
if client is None:
|
if client is None:
|
||||||
raise RuntimeError("MongoDB client has not been initialized")
|
raise RuntimeError("MongoDB client has not been initialized")
|
||||||
await client.admin.command("ping")
|
await client.admin.command("ping")
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import redis.asyncio as aioredis
|
||||||
|
from core.config import settings
|
||||||
|
|
||||||
|
_redis_pool: aioredis.Redis | None = None
|
||||||
|
|
||||||
|
async def init_redis() -> None:
|
||||||
|
global _redis_pool
|
||||||
|
_redis_pool = aioredis.from_url(
|
||||||
|
settings.REDIS_URL, encoding="utf-8", decode_responses=True
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def close_redis() -> None:
|
||||||
|
if _redis_pool:
|
||||||
|
await _redis_pool.aclose()
|
||||||
|
|
||||||
|
|
||||||
|
async def get_redis() -> aioredis.Redis:
|
||||||
|
if _redis_pool is None:
|
||||||
|
raise RuntimeError("Redis pool has not been initialized")
|
||||||
|
return _redis_pool
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
from pydantic import BaseModel, Field
|
||||||
|
from models.service import ServiceDocument
|
||||||
|
|
||||||
|
class ProxyDocument(BaseModel):
|
||||||
|
port: int = Field(..., description="Port number of the proxy")
|
||||||
|
service: ServiceDocument = Field(..., description="Associated service details")
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
class ServiceDocument(BaseModel):
|
||||||
|
name: str = Field(..., description="Name of the service")
|
||||||
|
port: int = Field(..., description="Port number of the service")
|
||||||
|
category: str = Field(..., description="Category of the service (e.g., web, pwn, etc.)")
|
||||||
@@ -497,6 +497,15 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" },
|
{ url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "redis"
|
||||||
|
version = "7.4.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/7b/7f/3759b1d0d72b7c92f0d70ffd9dc962b7b7b5ee74e135f9d7d8ab06b8a318/redis-7.4.0.tar.gz", hash = "sha256:64a6ea7bf567ad43c964d2c30d82853f8df927c5c9017766c55a1d1ed95d18ad", size = 4943913, upload-time = "2026-03-24T09:14:37.53Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/74/3a/95deec7db1eb53979973ebd156f3369a72732208d1391cd2e5d127062a32/redis-7.4.0-py3-none-any.whl", hash = "sha256:a9c74a5c893a5ef8455a5adb793a31bb70feb821c86eccb62eebef5a19c429ec", size = 409772, upload-time = "2026-03-24T09:14:35.968Z" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rich"
|
name = "rich"
|
||||||
version = "14.3.4"
|
version = "14.3.4"
|
||||||
@@ -604,6 +613,7 @@ dependencies = [
|
|||||||
{ name = "fastapi", extra = ["standard"] },
|
{ name = "fastapi", extra = ["standard"] },
|
||||||
{ name = "motor" },
|
{ name = "motor" },
|
||||||
{ name = "pydantic-settings" },
|
{ name = "pydantic-settings" },
|
||||||
|
{ name = "redis" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
@@ -611,6 +621,7 @@ requires-dist = [
|
|||||||
{ name = "fastapi", extras = ["standard"], specifier = ">=0.135.3" },
|
{ name = "fastapi", extras = ["standard"], specifier = ">=0.135.3" },
|
||||||
{ name = "motor", specifier = ">=3.7.1" },
|
{ name = "motor", specifier = ">=3.7.1" },
|
||||||
{ name = "pydantic-settings", specifier = ">=2.13.1" },
|
{ name = "pydantic-settings", specifier = ">=2.13.1" },
|
||||||
|
{ name = "redis", specifier = ">=7.4.0" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
Reference in New Issue
Block a user