Software Development with Claude Code
Dani Zysman
AI Curriculum Manager @ DataCamp

music-analytics-api/
app.py # Existing API (updated to register db_routes)
routes.py # Existing routes
models.py # Artist/Album models
db_routes.py # <- New database-backed Blueprint
chinook.db
test_routes.py
CLAUDE.md
> Create a new db_routes.py blueprint with an endpoint at
/artists/<artist_id>/albums that returns all albums by
a specific artist as JSON from chinook,db. Register it with @app.py
1. db_routes py - New Flask Blueprint with:
- get_db_connection() helper to connect to chinook.db
- Added endpoint that queries the database for all albums by a specific artist
- Returns JSON with AlbumId, Title, and ArtistId fields
2. Updated app.py
- Registered the blueprint so the new endpoint is active
The endpoint will return a 404 if the artist doesn't exist,
and returns albums sorted by title as JSON.
@app.route("/artists/<int:artist_id>/albums")
def get_artist_albums(artist_id):
conn = get_db()
artist = conn.execute("SELECT ... WHERE ArtistId = ?", ...)
albums = conn.execute("SELECT ... WHERE ArtistId = ?", ...)
conn.close()
return jsonify({"artist": ..., "albums": [...]})
$ python app.py & PID=$! && sleep 3 && curl http://127.0.0.1:5000/artists/1/albums
&& kill $PID
127.0.0.1 "GET /artists/1/albums HTTP/1.1" 200
[
{
"album_id": 1,
"artist_id": 1,
"title": "For Those About To Rock We Salute You"
},
{
"album_id": 4,
"artist_id": 1,
"title": "Let There Be Rock"
}
]
{"albums": []}from pydantic import BaseModel
from typing import List
class Album(BaseModel):
id: int
title: str
class ArtistAlbums(BaseModel):
artist_id: int
albums: List[Album]
> Add Pydantic validation to @db_routes.py. Return 404 with a message if the
artist doesn't exist or has no albums.
Done! Added Pydantic validation to db_routes.py:
Changes:
- Added Album model (album_id, title, artist_id)
- Returns 404 "Artist not found" if artist doesn't exist
- Returns 404 "Artist has no albums" if artist has no albums
- Validates each album against Album model before returning
- Returns 400 on validation errors
Responses:
- 404 "Artist not found"
- 404 "Artist has no albums"
- 200 with validated album data
Software Development with Claude Code