from fastapi import FastAPI
import os
from routers import auth, shows, venues, songs, social, tours, artists, preferences, reviews, badges, nicknames, moderation, attendance, groups, users, search, performances, notifications, feed, leaderboards, stats, admin, chase, gamification, videos, musicians, sequences, verticals, canon, on_this_day, discover, bands, festivals, playlists, analytics, recommendations

from fastapi.middleware.cors import CORSMiddleware

# Feature flags - set to False to disable features
ENABLE_BUG_TRACKER = os.getenv("ENABLE_BUG_TRACKER", "true").lower() == "true"

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"], # In production, set this to the frontend domain
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.include_router(auth.router)
app.include_router(shows.router)
app.include_router(venues.router)
app.include_router(songs.router)
app.include_router(social.router)
app.include_router(tours.router)
app.include_router(artists.router)
app.include_router(preferences.router)
app.include_router(reviews.router)
app.include_router(badges.router)
app.include_router(nicknames.router)
app.include_router(moderation.router)
app.include_router(attendance.router)
app.include_router(groups.router)
app.include_router(users.router)
app.include_router(search.router)
app.include_router(performances.router)
app.include_router(notifications.router)
app.include_router(feed.router)
app.include_router(leaderboards.router)
app.include_router(stats.router)
app.include_router(admin.router)
app.include_router(chase.router)
app.include_router(gamification.router)
app.include_router(videos.router)
app.include_router(musicians.router)
app.include_router(sequences.router)
app.include_router(verticals.router)
app.include_router(canon.router)
app.include_router(on_this_day.router)
app.include_router(discover.router)
app.include_router(bands.router)
app.include_router(festivals.router)
app.include_router(playlists.router)
app.include_router(analytics.router)


# Optional features - can be disabled via env vars
if ENABLE_BUG_TRACKER:
    from routers import tickets
    app.include_router(tickets.router)

app.include_router(recommendations.router)

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/healthz")
def health_check():
    """Health check endpoint for monitoring and load balancers"""
    return {"status": "healthy"}

