Merge pull request 'Injectables' (#7) from di into develop
Reviewed-on: https://hattori.ztsh.eu/paas/karl/pulls/7
This commit is contained in:
commit
4d730c8bfb
9 changed files with 34 additions and 24 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -2,6 +2,7 @@
|
|||
*.iml
|
||||
uv.lock
|
||||
**/*.kdbx*
|
||||
.compose_repository
|
||||
|
||||
__pycache__/
|
||||
**/dist/
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
|
|||
|
||||
class AppConfig(BaseModel):
|
||||
host: str = "127.0.0.1"
|
||||
port: int = 8000
|
||||
port: int = 8081
|
||||
reload: bool = True
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,24 +1,20 @@
|
|||
from typing import Annotated
|
||||
|
||||
from injectable import injectable, autowired, Autowired
|
||||
|
||||
from app.model.healthcheck import HealthCheck
|
||||
from app.services import DockerService, GitService, Passwords
|
||||
|
||||
|
||||
# @injectable
|
||||
class WebhookProcessor:
|
||||
def __init__(self):
|
||||
try:
|
||||
self._docker = DockerService()
|
||||
except Exception as e:
|
||||
self._docker = None
|
||||
print(e)
|
||||
try:
|
||||
self._git = GitService()
|
||||
except Exception as e:
|
||||
self._git = None
|
||||
print(f"{type(e).__name__}: {e}")
|
||||
try:
|
||||
self._keepass = Passwords()
|
||||
except Exception as e:
|
||||
self._keepass = None
|
||||
print(e)
|
||||
@autowired
|
||||
def __init__(self, docker: Annotated[DockerService, Autowired],
|
||||
git: Annotated[GitService, Autowired],
|
||||
keepass: Annotated[Passwords, Autowired]):
|
||||
self._docker = docker
|
||||
self._git = git
|
||||
self._keepass = keepass
|
||||
|
||||
@property
|
||||
def health(self) -> HealthCheck:
|
||||
|
|
|
|||
16
app/main.py
16
app/main.py
|
|
@ -1,6 +1,7 @@
|
|||
import logging
|
||||
|
||||
from fastapi import FastAPI
|
||||
from injectable import load_injection_container
|
||||
|
||||
from app.config import get_settings
|
||||
from app.core.core import WebhookProcessor
|
||||
|
|
@ -8,13 +9,18 @@ from app.util.logging import LoggingHandler, ExternalLoggingHandler
|
|||
|
||||
|
||||
class KarlApplication:
|
||||
from starlette.types import Receive, Scope, Send
|
||||
def __init__(self) -> None:
|
||||
self._set_logging()
|
||||
app = FastAPI(title="Karl", version="0.1.0")
|
||||
self._set_routes(app)
|
||||
self._set_events(app)
|
||||
_app = FastAPI(title="Karl", version="0.1.0")
|
||||
self._set_routes(_app)
|
||||
self._set_events(_app)
|
||||
self._init_services()
|
||||
pass
|
||||
|
||||
self._app = _app
|
||||
|
||||
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
||||
await self._app.__call__(scope, receive, send)
|
||||
|
||||
def _set_logging(self):
|
||||
logging.basicConfig(level=logging.INFO, handlers=[LoggingHandler()])
|
||||
|
|
@ -45,7 +51,7 @@ class KarlApplication:
|
|||
|
||||
def _init_services(self):
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
load_injection_container()
|
||||
webhook_service = WebhookProcessor()
|
||||
logger.info(webhook_service.health)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
import docker
|
||||
from docker.models.containers import Container
|
||||
from injectable import injectable
|
||||
|
||||
from app.model.containers import Tree, Compose, SimpleContainer
|
||||
|
||||
|
||||
@injectable(singleton=True)
|
||||
class DockerService:
|
||||
def __init__(self):
|
||||
self._client = docker.from_env()
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
import os.path
|
||||
|
||||
from injectable import injectable
|
||||
from pykeepass import PyKeePass, create_database, Group
|
||||
|
||||
|
||||
@injectable(singleton=True)
|
||||
class Passwords:
|
||||
def __init__(self):
|
||||
from app.config import get_settings
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
from git import Repo, Remote
|
||||
from injectable import injectable
|
||||
|
||||
from app.config import GitConfig, get_settings
|
||||
|
||||
|
||||
@injectable(singleton=True)
|
||||
class GitService:
|
||||
def __init__(self):
|
||||
self._settings = get_settings()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
app:
|
||||
host: "127.0.0.1"
|
||||
port: 8000
|
||||
port: 8081
|
||||
reload: true
|
||||
git:
|
||||
path: "F:/IdeaProjects/paas/karl/.compose_repository"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@ dependencies = [
|
|||
"pyyaml>=6.0.2",
|
||||
"gitpython>=3.1.45",
|
||||
"pykeepass>=4.1.1.post1",
|
||||
"docker>=7.1.0"
|
||||
"docker>=7.1.0",
|
||||
"injectable==4.0.1",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue