import { ChartDocument, Game, GoalDocument, IDStrings, integer, UserDocument, ScoreDocument, SessionScoreInfo, SongDocument, } from "tachi-common"; export function GetPBs(scoreInfo: SessionScoreInfo[]) { return scoreInfo.filter((e) => e.isNewScore === true || e.lampDelta > 0 || e.scoreDelta > 0); } export function CreateSongMap(songs: SongDocument[]) { const songMap = new Map>(); for (const song of songs) { songMap.set(song.id, song); } return songMap; } export function CreateUserMap(users: UserDocument[]) { const userMap = new Map(); for (const user of users) { userMap.set(user.id, user); } return userMap; } export function CreateGoalMap(goals: GoalDocument[]) { const goalMap = new Map(); for (const goal of goals) { goalMap.set(goal.goalID, goal); } return goalMap; } export function CreateChartIDMap(arr: T[]): Map { const map = new Map(); for (const t of arr) { map.set(t.chartID, t); } return map; } export function CreateChartMap(charts: ChartDocument[]) { const chartMap = new Map>(); for (const chart of charts) { chartMap.set(chart.chartID, chart); } return chartMap; } export function CreateScoreIDMap(scores: ScoreDocument[]) { const scoreMap = new Map>(); for (const score of scores) { scoreMap.set(score.scoreID, score); } return scoreMap; } export function CreateChartLink(chart: ChartDocument, game: Game) { if (chart.isPrimary) { return `/dashboard/games/${game}/${chart.playtype}/songs/${ chart.songID }/${encodeURIComponent(chart.difficulty)}`; } return `/dashboard/games/${game}/${chart.playtype}/songs/${chart.songID}/${chart.chartID}`; }