Fixed docker config. Added services

This commit is contained in:
2025-09-17 22:45:33 +02:00
parent da63f1b75b
commit df86a3d998
12 changed files with 513 additions and 41 deletions

View File

@@ -4,19 +4,74 @@ FastAPI application for MyDocManager file processor service.
This service provides API endpoints for health checks and task dispatching.
"""
import logging
import os
from fastapi import FastAPI, HTTPException
from contextlib import asynccontextmanager
from fastapi import FastAPI, HTTPException, Depends
from pydantic import BaseModel
import redis
from celery import Celery
from database.connection import test_database_connection
from app.database.connection import test_database_connection, get_database
from app.database.repositories.user_repository import UserRepository
from app.models.user import UserCreate
from app.services.init_service import InitializationService
from app.services.user_service import UserService
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
"""
Application lifespan manager for startup and shutdown tasks.
Handles initialization tasks that need to run when the application starts,
including admin user creation and other setup procedures.
"""
# Startup tasks
logger.info("Starting MyDocManager application...")
try:
# Initialize database connection
database = get_database()
# Initialize repositories and services
user_repository = UserRepository(database)
user_service = UserService(user_repository)
init_service = InitializationService(user_service)
# Run initialization tasks
initialization_result = init_service.initialize_application()
if initialization_result["initialization_success"]:
logger.info("Application startup completed successfully")
if initialization_result["admin_user_created"]:
logger.info("Default admin user was created during startup")
else:
logger.error("Application startup completed with errors:")
for error in initialization_result["errors"]:
logger.error(f" - {error}")
except Exception as e:
logger.error(f"Critical error during application startup: {str(e)}")
# You might want to decide if the app should continue or exit here
# For now, we log the error but continue
yield # Application is running
# Shutdown tasks (if needed)
logger.info("Shutting down MyDocManager application...")
# Initialize FastAPI app
app = FastAPI(
title="MyDocManager File Processor",
description="File processing and task dispatch service",
version="1.0.0"
version="1.0.0",
lifespan=lifespan
)
# Environment variables
@@ -44,6 +99,27 @@ class TestTaskRequest(BaseModel):
message: str
def get_user_service() -> UserService:
"""
Dependency to get user service instance.
This should be properly implemented with database connection management
in your actual application.
"""
database = get_database()
user_repository = UserRepository(database)
return UserService(user_repository)
# Your API routes would use the service like this:
@app.post("/api/users")
async def create_user(
user_data: UserCreate,
user_service: UserService = Depends(get_user_service)
):
return user_service.create_user(user_data)
@app.get("/health")
async def health_check():
"""
@@ -125,4 +201,4 @@ async def root():
"service": "MyDocManager File Processor",
"version": "1.0.0",
"status": "running"
}
}