Pengembangan Perangkat Lunak dengan Claude Code
Dani Zysman
AI Curriculum Manager @ DataCamp

music-analytics-api/
app.py # API yang ada (diperbarui untuk mendaftarkan db_routes)
routes.py # Rute yang ada
models.py # Model Artist/Album
db_routes.py # <- Blueprint baru berbasis database
chinook.db
test_routes.py
CLAUDE.md
> Buat blueprint db_routes.py baru dengan endpoint di
/artists/<artist_id>/albums yang mengembalikan semua album oleh
artis tertentu sebagai JSON dari chinook,db. Daftarkan dengan @app.py
1. db_routes py - Flask Blueprint baru dengan:
- helper get_db_connection() untuk terhubung ke chinook.db
- Menambahkan endpoint yang mengkueri semua album oleh artis tertentu
- Mengembalikan JSON dengan field AlbumId, Title, dan ArtistId
2. Memperbarui app.py
- Mendaftarkan blueprint agar endpoint baru aktif
Endpoint akan mengembalikan 404 jika artis tidak ada,
dan mengembalikan album diurutkan berdasarkan judul sebagai 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]
> Tambahkan validasi Pydantic ke @db_routes.py. Kembalikan 404 dengan pesan jika
artis tidak ada atau tidak punya album.
Selesai! Menambahkan validasi Pydantic ke db_routes.py:
Perubahan:
- Menambahkan model Album (album_id, title, artist_id)
- Mengembalikan 404 "Artist not found" jika artis tidak ada
- Mengembalikan 404 "Artist has no albums" jika artis tidak punya album
- Memvalidasi tiap album terhadap model Album sebelum mengembalikan
- Mengembalikan 400 pada error validasi
Respons:
- 404 "Artist not found"
- 404 "Artist has no albums"
- 200 dengan data album terverifikasi
Pengembangan Perangkat Lunak dengan Claude Code