Arch changes and feature flags
This commit is contained in:
47
backend/app/api/v1/feature_flags.py
Normal file
47
backend/app/api/v1/feature_flags.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from typing import Dict, Any
|
||||
from app.services.feature_flag_service import feature_flags
|
||||
from app.schemas.feature_flags import FeatureFlagsResponse, FeatureFlagResponse
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/flags", response_model=FeatureFlagsResponse)
|
||||
async def get_all_feature_flags() -> FeatureFlagsResponse:
|
||||
"""
|
||||
Get all feature flags for the frontend
|
||||
This endpoint is public as it only returns feature configuration
|
||||
"""
|
||||
all_flags = feature_flags.get_all_flags()
|
||||
enabled_flags = feature_flags.get_enabled_flags()
|
||||
|
||||
return FeatureFlagsResponse(
|
||||
flags=all_flags,
|
||||
enabled_flags=enabled_flags
|
||||
)
|
||||
|
||||
|
||||
@router.get("/flags/{flag_name}", response_model=FeatureFlagResponse)
|
||||
async def get_feature_flag(flag_name: str) -> FeatureFlagResponse:
|
||||
"""
|
||||
Get a specific feature flag value
|
||||
"""
|
||||
flag_name_upper = flag_name.upper()
|
||||
enabled = feature_flags.is_enabled(flag_name_upper)
|
||||
value = feature_flags.get_flag_value(flag_name_upper)
|
||||
|
||||
return FeatureFlagResponse(
|
||||
name=flag_name_upper,
|
||||
enabled=enabled,
|
||||
value=value
|
||||
)
|
||||
|
||||
|
||||
@router.post("/flags/reload")
|
||||
async def reload_feature_flags():
|
||||
"""
|
||||
Reload feature flags from environment variables
|
||||
This could be protected with admin permissions in production
|
||||
"""
|
||||
feature_flags.reload_flags()
|
||||
return {"message": "Feature flags reloaded successfully"}
|
||||
Reference in New Issue
Block a user