feat(web): add library API types mirroring internal/api/types.go
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
// Mirrors internal/api/types.go. Kept minimal — only the shapes the SPA
|
||||
// actually reads today (no LoginRequest/LoginResponse here; those live in
|
||||
// client.ts alongside the auth plumbing).
|
||||
|
||||
export type Page<T> = {
|
||||
items: T[];
|
||||
total: number;
|
||||
limit: number;
|
||||
offset: number;
|
||||
};
|
||||
|
||||
export type ArtistRef = {
|
||||
id: string;
|
||||
name: string;
|
||||
album_count: number;
|
||||
};
|
||||
|
||||
export type AlbumRef = {
|
||||
id: string;
|
||||
title: string;
|
||||
artist_id: string;
|
||||
artist_name: string;
|
||||
year?: number;
|
||||
track_count: number;
|
||||
duration_sec: number;
|
||||
cover_url: string;
|
||||
};
|
||||
|
||||
export type TrackRef = {
|
||||
id: string;
|
||||
title: string;
|
||||
album_id: string;
|
||||
album_title: string;
|
||||
artist_id: string;
|
||||
artist_name: string;
|
||||
track_number?: number;
|
||||
disc_number?: number;
|
||||
duration_sec: number;
|
||||
stream_url: string;
|
||||
};
|
||||
|
||||
export type ArtistDetail = ArtistRef & {
|
||||
albums: AlbumRef[];
|
||||
};
|
||||
|
||||
export type AlbumDetail = AlbumRef & {
|
||||
tracks: TrackRef[];
|
||||
};
|
||||
Reference in New Issue
Block a user