import { favoriteKey, favorites, listFavorites } from "./schema";

type Session = { userId: string } | null;
type DeleteResult =
  | { status: 200; body: { success: true; trackId: string } }
  | { status: 401; body: { error: "unauthorized" } }
  | { status: 404; body: { error: "favorite_not_found" } };

export function deleteFavorite(session: Session, trackId: string): DeleteResult {
  if (!session) return { status: 401, body: { error: "unauthorized" } };

  const key = favoriteKey(session.userId, trackId);
  if (!favorites.has(key)) {
    return { status: 404, body: { error: "favorite_not_found" } };
  }

  favorites.delete(key);
  return { status: 200, body: { success: true, trackId } };
}

export function getFavorites(session: Session) {
  if (!session) return { status: 401, body: { error: "unauthorized" as const } };
  return { status: 200, body: { data: listFavorites(session.userId) } };
}
