From 632781d1adf54287ecfe7cbcbc17074e14a769b2 Mon Sep 17 00:00:00 2001 From: TrueDoctor Date: Sat, 29 Sep 2018 23:59:42 +0200 Subject: added database methods --- DSACore/FireBase/Database.cs | 212 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 210 insertions(+), 2 deletions(-) (limited to 'DSACore/FireBase') diff --git a/DSACore/FireBase/Database.cs b/DSACore/FireBase/Database.cs index fd8aa4c..de7d540 100644 --- a/DSACore/FireBase/Database.cs +++ b/DSACore/FireBase/Database.cs @@ -3,6 +3,9 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; +using DSACore.DSA_Game.Characters; +using DSACore.Models.Database; +using DSACore.Models; using Firebase.Database; using Firebase.Database.Query; @@ -11,17 +14,222 @@ namespace DSACore.FireBase { public static class Database { + public static FirebaseClient firebase; + static Database() { var auth = File.ReadAllText(DSACore.DSA_Game.Dsa.rootPath+"Token"); ; // your app secret - var firebaseClient = new FirebaseClient( + firebase = new FirebaseClient( "https://heldenonline-4d828.firebaseio.com/", new FirebaseOptions { AuthTokenAsyncFactory = () => Task.FromResult(auth) }); } + + + public static async Task AddChar(Character file, Models.Network.Group group) + { + DatabaseChar.LoadChar(file, out GroupChar groupChar, out DatabaseChar data); + + var lastChar = await firebase + .Child("Chars") + .OrderBy("id") + .LimitToLast(1) + .OnceSingleAsync(); + int id = groupChar.Id = data.Id = lastChar.Id + 1; + + await firebase + .Child("Groups") + .Child("Char" + id) + .PutAsync(data); + + await firebase + .Child("Chars") + .Child("Char" + id) + .PutAsync(data); + + await firebase + .Child("Inventories") + .Child("Inventory" + id) + .PutAsync(new Inventory()); + + return id + 1; + } + + public static async Task RemoveChar(int id) + { + + await firebase + .Child("Groups") + .Child("Char" + id) + .DeleteAsync(); + + await firebase + .Child("Chars") + .Child("Char" + id) + .DeleteAsync(); + + await firebase + .Child("Inventories") + .Child("Inventory" + id) + .DeleteAsync(); + + } + + public static async Task GetChar(int id) + { + var chr = await firebase + .Child("Chars") + .Child("Char" + id) + .OnceSingleAsync(); + return chr; + } + + public static async Task GetInventory(int id) + { + var inv = await firebase + .Child("Inventories") + .Child("Inventory"+id) + .OnceSingleAsync(); + return inv; + } + + public static async Task SetInventory(int id, Inventory inv) + { + await firebase + .Child("Inventories") + .Child("Inventory" + id) + .PutAsync(inv); + } + + public static async Task AddTalent(Talent tal) + { + await firebase + .Child("Talents") + .Child(tal.Name) + .PutAsync(tal); + } + + public static async Task RemoveTalent(string talent) + { + await firebase + .Child("Talents") + .Child(talent) + .DeleteAsync(); + } + + public static async Task GetTalent(string talent) + { + return await firebase + .Child("Talents") + .Child(talent) + .OnceSingleAsync(); + } + + public static async Task AddSpell(GeneralSpell tal) + { + await firebase + .Child("Spells") + .Child(tal.Name) + .PutAsync(tal); + } - public static void DoStuff(){} + public static async Task RemoveSpell(string spell) + { + await firebase + .Child("Spells") + .Child(spell) + .DeleteAsync(); + } + + public static async Task GetSpell(string spell) + { + return await firebase + .Child("Spells") + .Child(spell) + .OnceSingleAsync(); + } + + + public static async Task AddWeapon(Weapon wep) + { + await firebase + .Child("Weapons") + .Child(wep.Name) + .PutAsync(wep); + } + + public static async Task RemoveWeapon(string weapon) + { + await firebase + .Child("Weapons") + .Child(weapon) + .DeleteAsync(); + } + + public static async Task< Weapon> GetWeapon(string weapon) + { + return await firebase + .Child("Weapons") + .Child(weapon) + .OnceSingleAsync(); + } + + public static async Task> GetGroups() + { + var groups = await firebase + .Child("Groups") + .OrderBy("id") + .OnceAsync(); + var ret = new List(); + + foreach (var firebaseObject in groups) + { + ret.Add(new Models.Network.Group(firebaseObject.Object.Name, firebaseObject.Object.Password)); + } + + return ret; + } + + public static async Task GetGroup(int id) + { + var group = await firebase + .Child("Groups") + .Child("Group"+id) + .OnceSingleAsync(); + return group; + } + + public static async void AddGroup(Group group) + { + var lastChar = await firebase + .Child("Groups") + .OrderBy("id") + .LimitToLast(1) + .OnceSingleAsync(); + int id = group.Id = lastChar.Id + 1; + + await firebase + .Child("Groups") + .Child("Group"+id) + .PutAsync(group); + } + + public static async void SetGroup(Group group) + { + await firebase + .Child("Groups") + .Child("Group" + group.Id) + .PutAsync(group); + } + + public static async void DeleteGroup(int id) + { + await firebase + .Child("Groups") + .Child("Group" + id) + .DeleteAsync(); + } } } -- cgit v1.2.3-70-g09d2