docs(quick-002): complete auto-rename duplicate playlists on import summary

- Add 002-SUMMARY.md with task details and verification results
- Update STATE.md quick tasks table
This commit is contained in:
2026-02-28 13:54:12 -05:00
parent 8ba8bbe7be
commit be38937f84
2 changed files with 67 additions and 1 deletions
+2 -1
View File
@@ -78,6 +78,7 @@ None currently.
| # | Description | Date | Commit | Directory |
|---|-------------|------|--------|-----------|
| 001 | Multi-playlist import support | 2026-02-28 | 50c8a33 | [001-multi-playlist-import-support](./quick/001-multi-playlist-import-support/) |
| 002 | Auto-rename duplicate playlists on import | 2026-02-28 | 8ba8bbe | [002-auto-rename-duplicate-playlists-on-import](./quick/002-auto-rename-duplicate-playlists-on-import/) |
## Session Continuity
@@ -97,5 +98,5 @@ None currently.
---
*State initialized: 2026-02-27*
Last activity: 2026-02-28 - Completed quick task 001: Multi-playlist import support
Last activity: 2026-02-28 - Completed quick task 002: Auto-rename duplicate playlists on import
*Last updated: 2026-02-28*
@@ -0,0 +1,65 @@
---
phase: quick
plan: 002
subsystem: playlist-import
tags: [playlist, import, deduplication, sqlc]
dependency_graph:
requires: []
provides: [unique-playlist-names-on-import]
affects: [playlist-import-flow]
tech_stack:
added: []
patterns: [count-query-for-uniqueness, sequential-rename-suffix]
key_files:
created: []
modified:
- backend/database/sql/queries/playlists.sql
- backend/database/sql/sqlcgen/playlists.sql.go
- backend/playlist/playlist.go
decisions:
- Placed CountPlaylistsByName query between playlist CRUD and track queries for logical grouping
- uniquePlaylistName is a private method — only ImportPlaylist calls it, keeping CreatePlaylist/CreatePlaylistWithTracks unchanged
metrics:
duration: 10 min
completed: "2026-02-28"
---
# Quick Task 002: Auto-rename Duplicate Playlists on Import Summary
**One-liner:** CountPlaylistsByName query + uniquePlaylistName helper auto-appends (1), (2), etc. on M3U import when name collides
## What Was Done
### Task 1: Add CountPlaylistsByName SQL query and regenerate sqlc
- Added `CountPlaylistsByName :one` query to `playlists.sql` — counts playlists with exact name match
- Regenerated sqlc producing `CountPlaylistsByName(ctx, name) (int64, error)` in Go
- **Commit:** `04b2088`
### Task 2: Add uniquePlaylistName helper and wire into ImportPlaylist
- Added `uniquePlaylistName(name string) string` method to playlist Service
- Logic: if name exists, tries "Name (1)", "Name (2)", etc. until a free name is found
- Wired single call `playlistName = s.uniquePlaylistName(playlistName)` in ImportPlaylist, between name derivation and CreatePlaylist call
- CreatePlaylist and CreatePlaylistWithTracks remain unchanged — no auto-rename on manual creation
- **Commit:** `8ba8bbe`
## Verification Results
| Check | Result |
|-------|--------|
| `go build ./backend/...` | ✅ Pass |
| `go vet ./backend/...` | ✅ Pass |
| CountPlaylistsByName in generated Go | ✅ Present |
| uniquePlaylistName only in ImportPlaylist | ✅ 3 occurrences (comment, definition, one call site) |
| CreatePlaylist unchanged | ✅ No uniquePlaylistName reference |
| CreatePlaylistWithTracks unchanged | ✅ No uniquePlaylistName reference |
## Deviations from Plan
None — plan executed exactly as written.
## Commits
| # | Hash | Message |
|---|------|---------|
| 1 | `04b2088` | feat(quick-002): add CountPlaylistsByName SQL query and regenerate sqlc |
| 2 | `8ba8bbe` | feat(quick-002): add uniquePlaylistName helper and wire into ImportPlaylist |