"""Routes for sources (musicians/artists whose version a tune is based on).""" from flask import Blueprint, jsonify, request from app.extensions import db from app.models import Source from app.auth import require_api_key sources_bp = Blueprint("sources", __name__, url_prefix="/sources") @sources_bp.get("/") def list_sources(): sources = db.session.query(Source).order_by(Source.name).all() return jsonify([s.to_dict() for s in sources]) @sources_bp.post("/") @require_api_key def create_source(): data = request.get_json(force=True) source = Source(name=data["name"]) db.session.add(source) db.session.commit() return jsonify(source.to_dict()), 201 @sources_bp.patch("/") @require_api_key def update_source(source_id): source = db.get_or_404(Source, source_id) data = request.get_json(force=True) if "name" in data: source.name = data["name"] db.session.commit() return jsonify(source.to_dict()) @sources_bp.delete("/") @require_api_key def delete_source(source_id): source = db.get_or_404(Source, source_id) db.session.delete(source) db.session.commit() return jsonify({"deleted": source_id})