- Add routers/canon.py with endpoints:
- GET /canon - list all canonical songs with versions
- GET /canon/{slug} - get canon with all band versions
- GET /canon/song/{id}/related - get related versions
- Add link_canon_songs.py auto-linker script
- Finds songs with same title across bands
- Creates SongCanon entries automatically
- Run with --apply to execute
64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
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
|
|
|
|
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)
|
|
|
|
|
|
# Optional features - can be disabled via env vars
|
|
if ENABLE_BUG_TRACKER:
|
|
from routers import tickets
|
|
app.include_router(tickets.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"}
|
|
|