CRUD Albums + Spotify API requests into DB.
All checks were successful
CI - Build Tonehaus Docker image / tonehaus-ci-build (push) Successful in 2m17s

This commit is contained in:
2025-11-20 19:53:45 +00:00
parent cd13f1478a
commit cd04fa5212
26 changed files with 6180 additions and 66 deletions

View File

@@ -2,7 +2,7 @@
{% block title %}Edit Review{% endblock %}
{% block body %}
<h1 class="h4 mb-1">Edit review</h1>
<p class="text-secondary">{{ review.albumName }}{{ review.albumArtist }} ({{ review.spotifyAlbumId }})</p>
<p class="text-secondary">{{ review.album.name }}{{ review.album.artists|join(', ') }}</p>
{{ form_start(form, {attr: {class: 'vstack gap-3', novalidate: 'novalidate'}}) }}
<div>{{ form_label(form.title) }}{{ form_widget(form.title, {attr: {class: 'form-control'}}) }}{{ form_errors(form.title) }}</div>

View File

@@ -14,7 +14,7 @@
<div class="card h-100">
<div class="card-body">
<h5 class="card-title mb-1">{{ r.title }} <span class="text-secondary">(Rating {{ r.rating }}/10)</span></h5>
<div class="text-secondary mb-2">{{ r.albumName }}{{ r.albumArtist }}</div>
<div class="text-secondary mb-2">{{ r.album.name }}{{ r.album.artists|join(', ') }}</div>
<p class="card-text">{{ r.content|u.truncate(220, '…', false) }}</p>
<a class="btn btn-link p-0" href="{{ path('review_show', {id: r.id}) }}">Read more</a>
</div>

View File

@@ -2,21 +2,7 @@
{% block title %}New Review{% endblock %}
{% block body %}
<h1 class="h4 mb-3">Write a review</h1>
<div class="row g-2 mb-3">
<div class="col-md-6">
<label class="form-label">Spotify Album ID</label>
<input class="form-control" type="text" name="spotifyAlbumId" value="{{ review.spotifyAlbumId }}" placeholder="e.g. 4m2880jivSbbyEGAKfITCa" />
</div>
<div class="col-md-6">
<label class="form-label">Artist</label>
<input class="form-control" type="text" name="albumArtist" value="{{ review.albumArtist }}" />
</div>
</div>
<div class="mb-3">
<label class="form-label">Album Title</label>
<input class="form-control" type="text" name="albumName" value="{{ review.albumName }}" />
</div>
<div class="alert alert-info">Pick an album first, then write your review on its page.</div>
{{ form_start(form, {attr: {class: 'vstack gap-3', novalidate: 'novalidate'}}) }}
<div>{{ form_label(form.title) }}{{ form_widget(form.title, {attr: {class: 'form-control'}}) }}{{ form_errors(form.title) }}</div>

View File

@@ -3,7 +3,10 @@
{% block body %}
<p><a href="{{ path('review_index') }}">← Back</a></p>
<h1 class="h4">{{ review.title }} <span class="text-secondary">(Rating {{ review.rating }}/10)</span></h1>
<p class="text-secondary">{{ review.albumName }}{{ review.albumArtist }} ({{ review.spotifyAlbumId }})</p>
<p class="text-secondary">
{{ review.album.name }}{{ review.album.artists|join(', ') }}
<a class="ms-1" href="{{ path('album_show', {id: review.album.spotifyId}) }}">View album</a>
</p>
<article class="mb-3">
<p>{{ review.content|nl2br }}</p>
</article>