Basic injects

This commit is contained in:
Piotr Dec 2025-10-12 20:30:43 +02:00
parent 2d3699ad00
commit 232920683a
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0
7 changed files with 29 additions and 19 deletions

View file

@ -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:

View file

@ -1,5 +1,6 @@
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from injectable import load_injection_container
from jinja2 import Environment, FileSystemLoader, select_autoescape
from app.api.v1 import router as api_v1_router
@ -18,6 +19,7 @@ app = FastAPI(title="Karl", version="0.1.0")
app.include_router(api_v1_router, prefix="/api/v1", tags=["v1"])
# app.add_event_handler()
load_injection_container()
webhook_service = WebhookProcessor()
print(webhook_service.health)

View file

@ -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()

View file

@ -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

View file

@ -1,13 +1,18 @@
from git import Repo, Remote
from injectable import injectable
from app.config import get_settings
@injectable(singleton=True)
class GitService:
def __init__(self):
self._settings = get_settings()
self._repo = Repo(self._settings.git.directory)
self._origin: Remote = self._repo.remotes.origin
try: # TODO: clone if not exists
self._repo = Repo(self._settings.git.directory)
self._origin: Remote = self._repo.remotes.origin
except:
self._repo = None
def get_modified_compose(self) -> str | None:
self._update()

View file

@ -2,6 +2,8 @@ app:
host: "127.0.0.1"
port: 8000
reload: true
git:
directory: "F:/IdeaProjects/paas/karl/.compose_repository"
kp:
file: "config/kp.kdbx"
secret: "config/secret.txt"

View file

@ -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]