veza/veza-backend-api/internal/core/track
senke b528050afa refactor(backend): extract upload + collaborators into sibling files
Two more cohesive blocks lifted out of monolithic files following the
same recipe as the marketplace refund split (commit 36ee3da1).

internal/core/track/service.go : 1639 → 1026 LOC
  Extracted to service_upload.go (640 LOC) :
    UploadTrack                       (multipart entry point)
    copyFileAsync                     (local/s3 dispatcher)
    copyFileAsyncLocal                (FS write path)
    copyFileAsyncS3                   (direct S3 stream path, v1.0.8)
    chunkStreamer interface           (helper for chunked → S3)
    CreateTrackFromChunkedUploadToS3  (v1.0.9 1.5 fast path)
    extFromContentType                (helper)
    MigrateLocalToS3IfConfigured      (post-assembly migration)
    mimeTypeForAudioExt               (helper)
    updateTrackStatus                 (status updater)
    cleanupFailedUpload               (rollback helper)
    CreateTrackFromPath               (no-multipart constructor)
  Removed `internal/monitoring` import from service.go (the only user
  was the upload path).

internal/handlers/playlist_handler.go : 1397 → 1107 LOC
  Extracted to playlist_handler_collaborators.go (309 LOC) :
    AddCollaboratorRequest, UpdateCollaboratorPermissionRequest DTOs
    AddCollaborator, RemoveCollaborator,
    UpdateCollaboratorPermission, GetCollaborators handlers
  All four handlers were a self-contained surface (one route group,
  one DTO pair, no shared helpers with the rest of the file).

Tests run after each split :
  go test ./internal/core/marketplace -short  →  PASS
  go test ./internal/core/track       -short  →  PASS
  go test ./internal/handlers          -short →  PASS

The dette-tech split target was three files at 1.7k+ / 1.6k+ / 1.4k+
LOC. After this commit + 36ee3da1 :
  marketplace/service.go            : 1737 → 1340  (-397)
  track/service.go                  : 1639 → 1026  (-613)
  handlers/playlist_handler.go      : 1397 → 1107  (-290)
  total reduction  : 4773 → 3473    (-1300, -27%)

Each receiver still has a clear "main" file ; the extracted siblings
encapsulate one concern apiece. Future splits should follow the same
naming pattern (service_<concern>.go,
playlist_handler_<concern>.go) so a quick `ls` shows the file
organisation matches the feature surface.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 04:10:43 +02:00
..
handler.go feat(v0.10.3): Commentaires & Interactions Sociales - F201-F215 2026-03-09 10:30:47 +01:00
handler_additional_test.go feat(security): pre-flight pentest scripts + share-token enumeration fix + audit doc (W5 Day 21) 2026-04-29 12:10:06 +02:00
handler_error_format_test.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
handler_mustget_test.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
handler_ownership_test.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
handler_test.go fix(backend): remediation plan — tests, playback_analytics, job queue, gamification 2026-02-17 16:01:45 +01:00
service.go refactor(backend): extract upload + collaborators into sibling files 2026-05-01 04:10:43 +02:00
service_async_test.go feat(tracks): serve S3-backed tracks via signed URL redirect (v1.0.8 P2) 2026-04-23 23:26:14 +02:00
service_chunked_s3_test.go feat(track): native S3 multipart for chunked uploads (v1.0.9 item 1.5) 2026-04-26 23:12:56 +02:00
service_n1_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
service_test.go [T0-006] test(backend): Ajout tests pour frontend_log_handler 2026-01-04 01:44:22 +01:00
service_upload.go refactor(backend): extract upload + collaborators into sibling files 2026-05-01 04:10:43 +02:00
track_analytics_handler.go feat(openapi): annotate track subsystem (social/analytics/search/hls/waveform) — v1.0.8 B-annot 2026-04-24 00:58:08 +02:00
track_batch_service.go v0.9.4 2026-03-05 23:03:43 +01:00
track_crud_handler.go feat(openapi): annotate track CRUD handlers + regen spec (v1.0.8 B-annot) 2026-04-24 00:45:10 +02:00
track_handler_integration_test.go [BE-API-002] api: Implement playlist collaborators endpoints 2025-12-23 01:41:43 +01:00
track_hls_handler.go feat(security): pre-flight pentest scripts + share-token enumeration fix + audit doc (W5 Day 21) 2026-04-29 12:10:06 +02:00
track_search_handler.go feat(openapi): annotate track subsystem (social/analytics/search/hls/waveform) — v1.0.8 B-annot 2026-04-24 00:58:08 +02:00
track_social_handler.go feat(security): pre-flight pentest scripts + share-token enumeration fix + audit doc (W5 Day 21) 2026-04-29 12:10:06 +02:00
track_upload_handler.go feat(observability): OTel SDK + collector + Tempo + 4 hot path spans (W2 Day 9) 2026-04-28 01:15:11 +02:00
track_upload_integration_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
track_waveform_handler.go feat(openapi): annotate track subsystem (social/analytics/search/hls/waveform) — v1.0.8 B-annot 2026-04-24 00:58:08 +02:00