wag-managment-api-service-l.../docs/architecture/system_architecture.md

4.3 KiB

System Architecture

Core Services

Top-Level Services

  1. AuthServiceApi

    • User authentication and authorization
    • Token management
    • Permission handling
  2. EventServiceApi

    • Event processing and management
    • Event routing and handling
    • Event validation
  3. ValidationServiceApi

    • Input validation
    • Data verification
    • Schema validation

System Components

AllConfigs

Configuration management for various system components.

Category Context Dependencies
Email configs, email_send_model -
NoSqlDatabase configs -
Redis configs -
SqlDatabase configs -
Token configs -

Schemas

  • SQL Alchemy schema definitions
  • Data models and relationships
  • Database structure definitions

ApiLibrary

Category Description
common Error line number tracking
date_time_actions DateTime handling functions
extensions Password module and utilities

ApiServices

Category Context Dependencies
Login UserLoginModule ApiLibrary, Schemas, ErrorHandlers, ApiValidations, ApiServices
Token TokenService Services, Schemas, ApiLibrary, ErrorHandlers, AllConfigs, ApiValidations

Services

Category Dependencies
Email ApiLibrary, Schemas, ErrorHandlers, ApiValidations, ApiServices
MongoDb -
PostgresDb -
Redis -

ErrorHandlers

  • ErrorHandlers: General error handling
  • Exceptions: Custom exception definitions

LanguageModels

  • Database: Database-related language models
  • Errors: Error message translations

ApiValidations

  • Custom: Custom validation rules
  • Request: Request validation logic

Testing Framework

Test Categories

  • AlchemyResponse pagination testing
  • Redis function testing
  • MongoDB function testing
  • Validation testing
  • Header testing
  • Auth function testing
  • Language testing
  • Property definition testing
  • SmartQuery testing

Error Categories

  • AlchemyError
  • ApiError
  • RedisError
  • MongoError
  • EmailError
  • Validation[Pydantic]

Alchemy Implementation Phases

  1. BaseAlchemyNeed

    • Session management
    • Core functionality
  2. PlainModel

    • Basic model implementation
  3. FilteredModel

    • Filter functionality
  4. PaginatedModel

    • Pagination attributes
    • Filter integration
  5. LanguageModel

    • Function retrieval
    • Header management
  6. ResponseModel

    • Plain AlchemyClass
    • Dictionary conversion
    • Multiple response handling

System Layers

  1. DependenciesLayer

    • External dependencies
    • System requirements
  2. ApplicationLayer

    • Core application logic
    • Business rules
  3. ServiceLayer

    • Service implementations
    • API endpoints
  4. TestLayer

    • Test suites
    • Test utilities
  5. DevLayer

    • Development tools
    • Debug utilities
  6. RootLayer

    • Main directory
    • Configuration files
    • Documentation

TODO Items

  1. Event Directory Structure

    • Move to ApiEvents
    • Docker file integration
    • Import organization
  2. MethodToEvent Renewal

    • Update implementation
    • Improve flexibility
  3. Endpoint Configuration

    • Remove unnecessary fields
    • Streamline configuration
  4. Middleware Organization

    • Consolidate into /TokenEventMiddleware/
    • Standardize naming
  5. Code Cleanup

    • Remove ActionsSchemaFactory
    • Remove ActionsSchema
    • Move endpoint_wrapper to Middleware.wrappers
  6. Function Organization

    • Support sync/async functions
    • Improve API function organization
  7. Directory Structure

    • Consolidate AllConfigs, ApiLibrary, ErrorHandlers
    • Move to RootLayer
  8. Configuration Management

    • Update RouteFactoryConfig
    • Update EndpointFactoryConfig
    • Implement event validation interface
  9. Language Model

    • Review Schemas.language_model
    • Update implementation
  10. Service Container

    • Review ApiServices
    • Plan container migration
  11. Language Defaults

    • Add to config
    • Implement ["tr", "en"] as default

Notes

  • Redis implementation needs RedisRow class
  • Event validation needs database integration
  • Consider containerization for ApiServices
  • Review language model implementation
  • Test coverage needs improvement