[INT-TYPE-005] Create PlaylistVisibility enum aligned with backend
This commit is contained in:
parent
8b4ef0abae
commit
2b81d5156d
4 changed files with 36 additions and 7 deletions
|
|
@ -327,7 +327,8 @@
|
|||
"description": "Playlist.visibility doit utiliser un enum aligné avec le backend.",
|
||||
"priority": "P1",
|
||||
"priority_rank": 8,
|
||||
"status": "todo",
|
||||
"status": "completed",
|
||||
"completed_at": "2025-01-27T13:30:00Z",
|
||||
"estimated_hours": 1,
|
||||
"side": "both_sides",
|
||||
"files_to_modify": [
|
||||
|
|
@ -1089,13 +1090,13 @@
|
|||
},
|
||||
"progress_tracking": {
|
||||
"total_tasks": 32,
|
||||
"completed": 7,
|
||||
"completed": 8,
|
||||
"in_progress": 0,
|
||||
"todo": 25,
|
||||
"todo": 24,
|
||||
"blocked": 0,
|
||||
"completion_percentage": 22,
|
||||
"last_updated": "2025-01-27T13:15:00Z",
|
||||
"completion_percentage": 25,
|
||||
"last_updated": "2025-01-27T13:30:00Z",
|
||||
"estimated_completion_date": null,
|
||||
"estimated_hours_remaining": 37
|
||||
"estimated_hours_remaining": 36
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,20 @@
|
|||
/**
|
||||
* Types pour la feature Playlists
|
||||
* T0451: Structure de base pour les playlists
|
||||
* INT-TYPE-005: PlaylistVisibility enum aligned with backend
|
||||
*/
|
||||
|
||||
/**
|
||||
* PlaylistVisibility enum - aligned with backend visibility concept
|
||||
* Backend currently uses is_public (bool), but enum supports future 'unlisted' value
|
||||
* Values: 'public', 'private', 'unlisted'
|
||||
*/
|
||||
export enum PlaylistVisibility {
|
||||
Public = 'public',
|
||||
Private = 'private',
|
||||
Unlisted = 'unlisted',
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface représentant une playlist
|
||||
* INT-TYPE-003: Playlist.id is UUID (string) from backend - always string
|
||||
|
|
@ -14,6 +26,9 @@ export interface Playlist {
|
|||
user_id: string;
|
||||
title: string;
|
||||
description?: string;
|
||||
// INT-TYPE-005: Use PlaylistVisibility enum (maps to backend is_public for now)
|
||||
visibility?: PlaylistVisibility;
|
||||
// Legacy: keep is_public for backward compatibility with backend
|
||||
is_public: boolean;
|
||||
cover_url?: string;
|
||||
track_count: number;
|
||||
|
|
|
|||
|
|
@ -125,13 +125,16 @@ export type Track = z.infer<typeof trackSchema>;
|
|||
/**
|
||||
* Playlist schema
|
||||
* INT-TYPE-003: Playlist.id is UUID (string) from backend - always string
|
||||
* INT-TYPE-005: PlaylistVisibility enum support (backend uses is_public bool for now)
|
||||
*/
|
||||
export const playlistSchema = z.object({
|
||||
id: uuidSchema, // UUID from backend - always string
|
||||
user_id: uuidSchema, // UUID from backend - always string
|
||||
title: z.string().min(1),
|
||||
description: z.string().optional().nullable(),
|
||||
is_public: z.boolean(),
|
||||
// INT-TYPE-005: Visibility enum (public, private, unlisted) - maps to is_public for now
|
||||
visibility: z.enum(['public', 'private', 'unlisted']).optional(),
|
||||
is_public: z.boolean(), // Backend field - maps to visibility: public=true, private=false
|
||||
cover_url: z.string().url().optional().nullable(),
|
||||
track_count: z.number().int().nonnegative(),
|
||||
follower_count: z.number().int().nonnegative(),
|
||||
|
|
|
|||
|
|
@ -397,6 +397,13 @@ export interface LibraryState {
|
|||
duration: number;
|
||||
}
|
||||
|
||||
// INT-TYPE-005: PlaylistVisibility enum aligned with backend
|
||||
export enum PlaylistVisibility {
|
||||
Public = 'public',
|
||||
Private = 'private',
|
||||
Unlisted = 'unlisted',
|
||||
}
|
||||
|
||||
export interface Playlist {
|
||||
// UUID from backend - always string
|
||||
id: string;
|
||||
|
|
@ -404,6 +411,9 @@ export interface Playlist {
|
|||
user_id: string;
|
||||
title: string; // Backend uses 'title' in JSON, but column is 'name'
|
||||
description?: string;
|
||||
// INT-TYPE-005: Use PlaylistVisibility enum (maps to backend is_public for now)
|
||||
visibility?: PlaylistVisibility;
|
||||
// Legacy: keep is_public for backward compatibility with backend
|
||||
is_public: boolean;
|
||||
cover_url?: string;
|
||||
track_count: number;
|
||||
|
|
|
|||
Loading…
Reference in a new issue