"""Routes for the standalone musicians table.""" from flask import Blueprint, jsonify, request from app.extensions import db from app.models import Musician from app.auth import require_api_key musicians_bp = Blueprint("musicians", __name__, url_prefix="/musicians") @musicians_bp.get("/") def list_musicians(): musicians = db.session.query(Musician).order_by(Musician.name).all() return jsonify([m.to_dict() for m in musicians]) @musicians_bp.post("/") @require_api_key def create_musician(): data = request.get_json(force=True) musician = Musician(name=data["name"]) db.session.add(musician) db.session.commit() return jsonify(musician.to_dict()), 201 @musicians_bp.patch("/") @require_api_key def update_musician(musician_id): musician = db.get_or_404(Musician, musician_id) data = request.get_json(force=True) if "name" in data: musician.name = data["name"] db.session.commit() return jsonify(musician.to_dict()) @musicians_bp.delete("/") @require_api_key def delete_musician(musician_id): musician = db.get_or_404(Musician, musician_id) db.session.delete(musician) db.session.commit() return jsonify({"deleted": musician_id})