Files
LinedanceAfspiller/linedance-api/app/main.py
2026-04-13 15:41:40 +02:00

62 lines
2.1 KiB
Python

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.core.database import engine, Base
# Importer ALLE modeller så create_all kender dem
from app.models import (
User, Song, Dance, DanceLevel, Project, ProjectMember, ProjectSong,
PlaylistShare, CommunityDance, CommunityDanceAlt, DanceAltRating,
SongDance, SongAltDance,
)
from app.routers import auth, projects, songs, alternatives, dances, sync, sharing
from app.websocket.manager import router as ws_router
# Opret tabeller hvis de ikke findes
Base.metadata.create_all(bind=engine)
app = FastAPI(
title="Linedance API",
version="0.1.0",
description="Backend for linedance-afspiller og projektstyring",
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Stram til i produktion
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(auth.router)
app.include_router(projects.router)
app.include_router(songs.router)
app.include_router(alternatives.router)
app.include_router(dances.router)
app.include_router(sync.router)
app.include_router(sharing.router)
@app.on_event("startup")
def seed_dance_levels():
"""Opret standard dans-niveauer hvis tabellen er tom."""
from sqlalchemy.orm import Session
from app.models import DanceLevel
with Session(engine) as db:
if db.query(DanceLevel).count() == 0:
defaults = [
DanceLevel(sort_order=1, name="Begynder", description="Passer til alle"),
DanceLevel(sort_order=2, name="Let øvet", description="Lidt erfaring kræves"),
DanceLevel(sort_order=3, name="Øvet", description="Kræver regelmæssig træning"),
DanceLevel(sort_order=4, name="Erfaren", description="For dedikerede dansere"),
DanceLevel(sort_order=5, name="Ekspert", description="Konkurrenceniveau"),
]
db.add_all(defaults)
db.commit()
app.include_router(ws_router)
@app.get("/")
def root():
return {"status": "ok", "service": "Linedance API"}