from fastapi import APIRouter from app.api.config import schemas from app.config import settings router = APIRouter(prefix="/config", tags=["Config"]) @router.get( "", response_model=schemas.ConfigResponse, ) def get_config() -> schemas.ConfigResponse: return schemas.ConfigResponse( encrypter=schemas.EncrypterConfig( backend=settings.encrypter_backend, ), dsp=schemas.DspConfig( rate_limit_stats_backend=settings.dsp_rate_limit_stats_backend, spotify_songwhip_use_faker=settings.spotify_songwhip_use_faker, spotify_smf_use_faker=settings.spotify_smf_use_faker, ), data_sink=schemas.DataSinkConfig( backend=settings.data_sink_backend, ), fan_fanout=schemas.FanFanoutConfig( batch_size=settings.fan_fanout_batch_size, spotify_smf_batch_size=settings.fan_fanout_spotify_smf_batch_size, spotify_songwhip_batch_size=settings.fan_fanout_spotify_songwhip_batch_size, dispatch_backend=settings.fan_fanout_dispatch_backend, time_limit_s=settings.fan_fanout_time_limit_s, ), fan_collect=schemas.FanCollectConfig( dispatch_backend=settings.fan_collect_dispatch_backend, time_limit_s=settings.fan_collect_time_limit_s, timeout_buffer_s=settings.fan_collect_timeout_buffer_s, rate_limit_circuit_breaker_threshold=settings.fan_collect_rate_limit_circuit_breaker_threshold, cooldown_s=settings.fan_collect_cooldown_s, concurrency=settings.fan_collect_concurrency, spotify_smf_concurrency=settings.fan_collect_spotify_smf_concurrency, spotify_songwhip_concurrency=settings.fan_collect_spotify_songwhip_concurrency, intervals=schemas.FanCollectIntervalsConfig( profile_s=settings.fan_collect_profile_interval_s, top_artists_s=settings.fan_collect_top_artists_interval_s, top_tracks_s=settings.fan_collect_top_tracks_interval_s, recently_played_s=settings.fan_collect_recently_played_interval_s, playlists_s=settings.fan_collect_playlists_interval_s, saved_albums_s=settings.fan_collect_saved_albums_interval_s, saved_tracks_s=settings.fan_collect_saved_tracks_interval_s, followed_artists_s=settings.fan_collect_followed_artists_interval_s, ), sqs_queue_urls=schemas.FanCollectSqsQueueUrlsConfig( spotify_smf=settings.sqs_fan_collect_spotify_smf_queue_url, spotify_songwhip=settings.sqs_fan_collect_spotify_songwhip_queue_url, ), ), pipeline_run=schemas.PipelineRunConfig( stale_timeout_s=settings.pipeline_run_stale_timeout_s, estimate_avg_latency_ms=settings.pipeline_run_estimate_avg_latency_ms, ), )