Skip to content

File tree

Een overzicht van de mappstructuur van de MMMS backend. Bedoelt als naslagwerk voor snellere navigatie binnen de ontwikkelomgeving.

  • Directory

    backend/

    • app.py # Hoofdapplicatie entry point
    • Directorychalicelib/ # Applicatiebibliotheek
      • Directoryaws/ # AWS service integraties
        • aws_credentials_manager.py # AWS credentials management
      • Directorycontrollers/ # HTTP request handlers
        • api_key_controller.py # API key endpoints
        • mail_controller.py # Mail endpoints
        • README.md # Controllers documentatie
      • Directorymodels/ # Pydantic data models
        • api_key_model.py # API key data models
        • mail_request_model.py # Mail request models
        • sqs_message_model.py # SQS message models
        • Directoryresponse/ # Response data models
          • base_response_model.py # Base response model
        • README.md # Model documentatie
      • Directoryqueries/ # SQL queries
        • api_queries.py # API key SQL queries
      • Directoryrepositories/ # Data access
        • api_key_repository.py # API key data access
        • base_repository.py # Base repository pattern
        • sqs_repository.py # SQS data access
        • README.md # Repositories documentatie
      • Directoryservices/ # Business logic
        • api_key_service.py # API key business logic
        • logger_service.py # Logging service
        • mail_service.py # Mail business logic
        • README.md # Services documentatie
      • Directoryutils/ # Utility functies
        • api_key_utils.py # API key utilities
        • auth_middleware.py # Authenticatie middleware
        • decorators.py # Custom decorators
        • error_handler.py # Error handling utilities
        • error_middleware.py # Error handling middleware
        • response_utils.py # Response formatting
        • validation_utils.py # Input validatie
        • README.md # Utils documentatie
    • Directorytests/ # Test suite
      • conftest.py # Pytest configuratie
      • Directorycontrollers/ # Controller tests
        • test_api_key_controller.py # API key controller tests
        • test_mail_controller.py # Mail controller tests
      • Directoryrepositories/ # Repository tests
        • test_api_key_repository.py # API key repository tests
        • test_sqs_repository.py # SQS repository tests
      • Directoryservices/ # Service tests
        • test_api_key_service.py # API key service tests
        • test_mail_service.py # Mail service tests
      • Directoryutils/ # Utility tests
        • test_api_key_utils.py # API key utils tests
        • test_auth_middleware.py # Auth middleware tests
        • test_decorators.py # Decorators tests
        • test_error_handler.py # Error handler tests
        • test_error_middleware.py # Error middleware tests
        • test_response_utils.py # Response utils tests
        • test_validation_utils.py # Validation utils tests
      • README.md # Test documentatie
    • Directory.chalice/ # Chalice configuratie
    • requirements.txt # Python dependencies
    • pytest.ini # Pytest configuratie
    • README.md # Project documentatie
  • app.py: Hoofdapplicatie entry point met Chalice routes en SQS consumer
  • requirements.txt: Python dependencies voor de applicatie
  • pytest.ini: Pytest configuratie voor test uitvoering
  • README.md: Project documentatie en setup instructies

De applicatiebibliotheek georganiseerd volgens lagenarchitectuur:

  • aws_credentials_manager.py: AWS credentials management en service client configuratie
  • api_key_controller.py: HTTP handlers voor API key management endpoints
  • mail_controller.py: HTTP handlers voor email verzending endpoints
  • README.md: Controllers documentatie en best practices
  • api_key_model.py: Pydantic models voor API key data validatie
  • mail_request_model.py: Pydantic models voor email request validatie
  • sqs_message_model.py: Pydantic models voor SQS message validatie
  • response/: Response data models
    • base_response_model.py: Base response model voor consistente API responses
  • README.md: Model documentatie en validatie regels
  • api_queries.py: SQL queries voor API key database operaties
  • api_key_repository.py: Database access voor API key operaties
  • base_repository.py: Base repository pattern implementatie
  • sqs_repository.py: SQS queue access voor message publishing
  • README.md: Repository documentatie en data access patterns
  • api_key_service.py: Business logic voor API key management
  • logger_service.py: Logging service configuratie en utilities
  • mail_service.py: Business logic voor email verzending via AWS SES
  • README.md: Service documentatie en business logic patterns
  • api_key_utils.py: Utilities voor API key generatie en validatie
  • auth_middleware.py: Middleware voor API key authenticatie
  • decorators.py: Custom decorators (@timer, @cache)
  • error_handler.py: Error handling utilities en custom exceptions
  • error_middleware.py: Centralized error handling middleware
  • response_utils.py: Response formatting utilities
  • validation_utils.py: Input validatie utilities
  • README.md: Utils documentatie en utility patterns

Test suite georganiseerd per laag:

  • test_api_key_controller.py: Unit tests voor API key controller
  • test_mail_controller.py: Unit tests voor mail controller
  • test_api_key_repository.py: Unit tests voor API key repository
  • test_sqs_repository.py: Unit tests voor SQS repository
  • test_api_key_service.py: Unit tests voor API key service
  • test_mail_service.py: Unit tests voor mail service
  • test_api_key_utils.py: Unit tests voor API key utilities
  • test_auth_middleware.py: Unit tests voor auth middleware
  • test_decorators.py: Unit tests voor decorators
  • test_error_handler.py: Unit tests voor error handler
  • test_error_middleware.py: Unit tests voor error middleware
  • test_response_utils.py: Unit tests voor response utilities
  • test_validation_utils.py: Unit tests voor validation utilities
  • Controllers: {feature}_controller.py
  • Services: {feature}_service.py
  • Repositories: {feature}_repository.py
  • Models: {feature}_model.py
  • Tests: test_{feature}_{layer}.py
  • Separation of Concerns: Elke laag heeft zijn eigen directory
  • Test Coverage: Tests georganiseerd per laag voor betere maintainability
  • Documentation: README.md bestanden in elke directory voor context
  • Utils: Herbruikbare utilities gescheiden van business logic
# Standard library imports
import json
from datetime import datetime
# Third-party imports
from chalice import Response
from pydantic import BaseModel
# Local imports
from chalicelib.services.mail_service import MailService
from chalicelib.utils.response_utils import create_success_response