public static async Task AddTag(this IGameDatabase db, string unicode, string fancyName, ITagsList tagsList = null) { string emojiDatabaseIndex = string.Join(" ", Encoding.UTF8.GetBytes(unicode)); //now check if we exist TagData tagData = await db.GetData <TagData>(emojiDatabaseIndex); if (tagData == null) { tagData = new TagData() { Name = emojiDatabaseIndex, Emoji = unicode, FancyName = fancyName, }; await db.SaveData(tagData); } await db.Add(tagData); if (tagsList != null && !tagsList.Tags.Contains(emojiDatabaseIndex)) { tagsList.Tags.Add(emojiDatabaseIndex); } }
public static async Task Add <T>(this IGameDatabase db, params string [] databaseIndexes) where T : IDatabaseEntry { var entryListData = await db.GetData <EntryListData>(typeof(T).Name); bool doAdd = false; if (entryListData == null) { entryListData = new EntryListData() { Type = typeof(T).Name }; //signal that we need to add this to the EntryListData itself doAdd = entryListData.Type != entryListData.GetType().Name; } foreach (var dbEntry in databaseIndexes) { if (!entryListData.Entries.Contains(dbEntry)) { entryListData.Entries.Add(dbEntry); } } if (doAdd) { await db.Add(entryListData); } await db.SaveData(entryListData); }
public static async Task ImportBackup(this IGameDatabase db, Dictionary <string, Dictionary <string, IDatabaseEntry> > backup) { foreach (var dataTypeKV in backup) { var dataTypeName = dataTypeKV.Key; var dataTypeValue = dataTypeKV.Value; foreach (var dataEntry in dataTypeValue) { await db.SaveData(dataEntry.Value); } } }