Basic injects
This commit is contained in:
parent
2d3699ad00
commit
232920683a
7 changed files with 29 additions and 19 deletions
|
|
@ -1,24 +1,20 @@
|
||||||
|
from typing import Annotated
|
||||||
|
|
||||||
|
from injectable import injectable, autowired, Autowired
|
||||||
|
|
||||||
from app.model.healthcheck import HealthCheck
|
from app.model.healthcheck import HealthCheck
|
||||||
from app.services import DockerService, GitService, Passwords
|
from app.services import DockerService, GitService, Passwords
|
||||||
|
|
||||||
|
|
||||||
|
# @injectable
|
||||||
class WebhookProcessor:
|
class WebhookProcessor:
|
||||||
def __init__(self):
|
@autowired
|
||||||
try:
|
def __init__(self, docker: Annotated[DockerService, Autowired],
|
||||||
self._docker = DockerService()
|
git: Annotated[GitService, Autowired],
|
||||||
except Exception as e:
|
keepass: Annotated[Passwords, Autowired]):
|
||||||
self._docker = None
|
self._docker = docker
|
||||||
print(e)
|
self._git = git
|
||||||
try:
|
self._keepass = keepass
|
||||||
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)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def health(self) -> HealthCheck:
|
def health(self) -> HealthCheck:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
from fastapi import FastAPI, Request
|
from fastapi import FastAPI, Request
|
||||||
from fastapi.responses import HTMLResponse
|
from fastapi.responses import HTMLResponse
|
||||||
|
from injectable import load_injection_container
|
||||||
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
||||||
|
|
||||||
from app.api.v1 import router as api_v1_router
|
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.include_router(api_v1_router, prefix="/api/v1", tags=["v1"])
|
||||||
# app.add_event_handler()
|
# app.add_event_handler()
|
||||||
|
|
||||||
|
load_injection_container()
|
||||||
webhook_service = WebhookProcessor()
|
webhook_service = WebhookProcessor()
|
||||||
print(webhook_service.health)
|
print(webhook_service.health)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
import docker
|
import docker
|
||||||
from docker.models.containers import Container
|
from docker.models.containers import Container
|
||||||
|
from injectable import injectable
|
||||||
|
|
||||||
from app.model.containers import Tree, Compose, SimpleContainer
|
from app.model.containers import Tree, Compose, SimpleContainer
|
||||||
|
|
||||||
|
|
||||||
|
@injectable(singleton=True)
|
||||||
class DockerService:
|
class DockerService:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._client = docker.from_env()
|
self._client = docker.from_env()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
|
from injectable import injectable
|
||||||
from pykeepass import PyKeePass, create_database, Group
|
from pykeepass import PyKeePass, create_database, Group
|
||||||
|
|
||||||
|
|
||||||
|
@injectable(singleton=True)
|
||||||
class Passwords:
|
class Passwords:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
from app.config import get_settings
|
from app.config import get_settings
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,18 @@
|
||||||
from git import Repo, Remote
|
from git import Repo, Remote
|
||||||
|
from injectable import injectable
|
||||||
|
|
||||||
from app.config import get_settings
|
from app.config import get_settings
|
||||||
|
|
||||||
|
|
||||||
|
@injectable(singleton=True)
|
||||||
class GitService:
|
class GitService:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._settings = get_settings()
|
self._settings = get_settings()
|
||||||
self._repo = Repo(self._settings.git.directory)
|
try: # TODO: clone if not exists
|
||||||
self._origin: Remote = self._repo.remotes.origin
|
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:
|
def get_modified_compose(self) -> str | None:
|
||||||
self._update()
|
self._update()
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ app:
|
||||||
host: "127.0.0.1"
|
host: "127.0.0.1"
|
||||||
port: 8000
|
port: 8000
|
||||||
reload: true
|
reload: true
|
||||||
|
git:
|
||||||
|
directory: "F:/IdeaProjects/paas/karl/.compose_repository"
|
||||||
kp:
|
kp:
|
||||||
file: "config/kp.kdbx"
|
file: "config/kp.kdbx"
|
||||||
secret: "config/secret.txt"
|
secret: "config/secret.txt"
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,8 @@ dependencies = [
|
||||||
"pyyaml>=6.0.2",
|
"pyyaml>=6.0.2",
|
||||||
"gitpython>=3.1.45",
|
"gitpython>=3.1.45",
|
||||||
"pykeepass>=4.1.1.post1",
|
"pykeepass>=4.1.1.post1",
|
||||||
"docker>=7.1.0"
|
"docker>=7.1.0",
|
||||||
|
"injectable==4.0.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[project.optional-dependencies]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue