repertory-api/app/routes_musicians.py

44 lines
1.2 KiB
Python
Raw Permalink Normal View History

2026-06-09 15:07:08 -04:00
"""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("/<int:musician_id>")
@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("/<int:musician_id>")
@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})