public static async Task <Dictionary <string, IDatabaseEntry> > GetBackup <T>(this IGameDatabase db) where T : IDatabaseEntry { var entryNames = await db.GetAll <T>(); var dataTasks = new List <Task <T> >(); foreach (var entryName in entryNames) { dataTasks.Add(db.GetData <T>(entryName)); } await Task.WhenAll(dataTasks); var allData = dataTasks.Select(x => { var value = x.Result; return(new KeyValuePair <string, IDatabaseEntry>(value.DatabaseIndex, value)); }).ToDictionary(x => x.Key, x => x.Value); return(allData); }
public static async Task <Dictionary <string, Dictionary <string, IDatabaseEntry> > > GetBackup(this IGameDatabase db) { var mainCollection = new Dictionary <string, Dictionary <string, IDatabaseEntry> > { [nameof(EntryListData)] = new Dictionary <string, IDatabaseEntry>(), [nameof(RoundData)] = new Dictionary <string, IDatabaseEntry>(), [nameof(MatchData)] = new Dictionary <string, IDatabaseEntry>(), [nameof(LevelData)] = new Dictionary <string, IDatabaseEntry>(), [nameof(TagData)] = new Dictionary <string, IDatabaseEntry>(), [nameof(PlayerData)] = new Dictionary <string, IDatabaseEntry>(), }; foreach (var entryName in await db.GetAll <EntryListData>()) { mainCollection [nameof(EntryListData)] [entryName] = await db.GetData <EntryListData>(entryName); } foreach (var entryName in await db.GetAll <RoundData>()) { mainCollection [nameof(RoundData)] [entryName] = await db.GetData <RoundData>(entryName); } foreach (var entryName in await db.GetAll <MatchData>()) { mainCollection [nameof(MatchData)] [entryName] = await db.GetData <MatchData>(entryName); } foreach (var entryName in await db.GetAll <LevelData>()) { mainCollection [nameof(LevelData)] [entryName] = await db.GetData <LevelData>(entryName); } foreach (var entryName in await db.GetAll <TagData>()) { mainCollection [nameof(TagData)] [entryName] = await db.GetData <TagData>(entryName); } foreach (var entryName in await db.GetAll <PlayerData>()) { mainCollection [nameof(PlayerData)] [entryName] = await db.GetData <PlayerData>(entryName); } return(mainCollection); }
/// <summary> /// Ideally these two should not be used whatsoever, please deprecate after moving the code over /// </summary> /// <typeparam name="T"></typeparam> /// <param name="db"></param> public static async Task <List <T> > GetAllData <T>(this IGameDatabase db) where T : IDatabaseEntry { return(await db.GetAllData <T>(await db.GetAll <T>())); }
public static async Task IterateOverAll <T>(this IGameDatabase db, Func <T, Task <bool> > callback) where T : IDatabaseEntry { await db.IterateOver(callback, await db.GetAll <T>()); }