• Extracts available filter options from match results.

    Parameters

    Returns { genres: string[]; formats: string[]; statuses: MatchStatus[]; tags: string[] }

    Available genres, formats, and statuses.

    export function extractAvailableFilterOptions(
    matchResults: NormalizedMatchForStats[],
    ): {
    genres: string[];
    formats: string[];
    statuses: MatchStatus[];
    tags: string[];
    } {
    const genresSet = new Set<string>();
    const formatsSet = new Set<string>();
    const statusesSet = new Set<MatchStatus>();
    const tagsSet = new Set<string>();

    for (const match of matchResults) {
    // Extract genres
    const genres = match.selectedMatch?.genres ?? [];
    for (const genre of genres) {
    genresSet.add(genre);
    }

    // Extract format
    const format = match.selectedMatch?.format;
    if (format) {
    formatsSet.add(format);
    }

    // Extract tags
    const tags = match.selectedMatch?.tags ?? [];
    for (const tag of tags) {
    tagsSet.add(tag);
    }

    // Extract status
    statusesSet.add(match.status);
    }

    return {
    genres: Array.from(genresSet).sort((a, b) => a.localeCompare(b)),
    formats: Array.from(formatsSet).sort((a, b) => a.localeCompare(b)),
    statuses: Array.from(statusesSet).sort((a, b) => a.localeCompare(b)),
    tags: Array.from(tagsSet).sort((a, b) => a.localeCompare(b)),
    };
    }