47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
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"} |