Initial Commit

slip slop
This commit is contained in:
Ian Keane 2026-06-09 15:07:08 -04:00
commit 064e672ab7
61 changed files with 3504 additions and 0 deletions

43
app/routes_sources.py Normal file
View file

@ -0,0 +1,43 @@
"""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("/<int:source_id>")
@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("/<int:source_id>")
@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})