internal void Save(Clan Clan) { using (MysqlEntities Database = new MysqlEntities()) { Database.Configuration.AutoDetectChangesEnabled = false; Database.Configuration.ValidateOnSaveEnabled = false; var Data = Database.Clan.Find(Clan.Clan_ID); if (Data != null) { Data.Data = JsonConvert.SerializeObject(Clan, this.Settings); Database.Entry(Data).State = EntityState.Modified; } Database.SaveChanges(); } /* * while (true) * { * * switch (DBMS) * { * case DBMS.Mysql: * { * * using (MysqlEntities Database = new MysqlEntities()) * { * Database.Configuration.AutoDetectChangesEnabled = false; * Database.Configuration.ValidateOnSaveEnabled = false; * var Data = Database.Clan.Find(Clan.Clan_ID); * * if (Data != null) * { * Data.Data = JsonConvert.SerializeObject(Clan, this.Settings); * Database.Entry(Data).State = EntityState.Modified; * } * * Database.SaveChanges(); * } * break; * } * * case DBMS.Redis: * { * Redis.Clans.StringSet(Clan.Clan_ID.ToString(), JsonConvert.SerializeObject(Clan, this.Settings), * TimeSpan.FromHours(4)); * break; * } * * case DBMS.Both: * { * this.Save(Clan, DBMS.Mysql); * DBMS = DBMS.Redis; * continue; * } * } * break; * }*/ }
internal static async Task Save() { using (MysqlEntities Database = new MysqlEntities()) { foreach (var Player in Levels.Values.ToList()) { lock (Player) { Player.Avatar.LastSave = DateTime.UtcNow; var Data = Database.Player.Find(Player.Avatar.UserId); if (Data != null) { Data.Avatar = JsonConvert.SerializeObject(Player.Avatar, Settings); Data.Village = Player.JSON; Data.Trophies = Player.Avatar.Trophies; Data.FacebookID = Player.Avatar.Facebook.Identifier ?? "#:#:#:#"; } Database.SaveChanges(); } } await Database.BulkSaveChangesAsync(); } }
internal Clan Get(long ClanID, Logic.Enums.DBMS DBMS = Constants.Database, bool Store = true) { if (!this.ContainsKey(ClanID)) { Clan Clan = null; switch (DBMS) { case Logic.Enums.DBMS.MySQL: using (MysqlEntities Database = new MysqlEntities()) { var Data = Database.ClanDB.Find(ClanID); if (!string.IsNullOrEmpty(Data?.Data)) { Clan = new Logic.Clan(ClanID); JsonConvert.PopulateObject(Data.Data, Clan, this.Settings); if (Store) { this.Add(Clan); } } } break; case Logic.Enums.DBMS.Redis: string Property = Redis.Clans.StringGet(ClanID.ToString()).ToString(); if (!string.IsNullOrEmpty(Property)) { Clan = new Clan(ClanID); JsonConvert.PopulateObject(Property, Clan, this.Settings); if (Store) { this.Add(Clan); } } break; case Logic.Enums.DBMS.Both: Clan = this.Get(ClanID, Logic.Enums.DBMS.Redis, Store); if (Clan == null) { Clan = this.Get(ClanID, Logic.Enums.DBMS.MySQL, Store); if (Clan != null) { this.Save(Clan, Logic.Enums.DBMS.Redis); } } break; } return(Clan); } return(this[ClanID]); }
internal Level FetchLevel(long userId) { var level = default(Level); try { using (var Ctx = new MysqlEntities()) { var Player = Ctx.Player.Find(userId); if (Player != null) { level = new Level { Avatar = JsonConvert.DeserializeObject <Logic.Player>(Player.Avatar, this.Settings), JSON = Player.Village }; } } } catch (Exception ex) { Exceptions.Log(ex, $"Exception while trying to get a level {userId} from the database."); level = null; } return(level); }
internal static Level Get(long UserId, bool Store = true, bool AvatarOnly = false) { if (!Levels.ContainsKey(UserId)) { Level Player = null; using (MysqlEntities Database = new MysqlEntities()) { var Data = Database.Player.Find(UserId); if (!string.IsNullOrEmpty(Data?.Avatar) && !string.IsNullOrEmpty(Data?.Village)) { Player = new Level { Avatar = JsonConvert.DeserializeObject <Logic.Player>(Data.Avatar, Settings) }; if (!AvatarOnly) { Player.JSON = Data.Village; } if (Store) { Add(Player); } } } return(Player); } return(Levels[UserId]); }
public static void Save(Clan alliance) { try { using (MysqlEntities ctx = new MysqlEntities()) { ctx.Configuration.AutoDetectChangesEnabled = false; var c = ctx.clan.Find((int)alliance.Clan_ID); if (c != null) { c.Data = JsonConvert.SerializeObject(alliance, Settings2); ctx.Entry(c).State = EntityState.Modified; } ctx.SaveChanges(); } } catch (DbEntityValidationException ex) { ExceptionLogger.Log(ex, $"Exception while trying to save a clan {alliance.Clan_ID} to the database. Check error for more information."); foreach (var entry in ex.EntityValidationErrors) { foreach (var errs in entry.ValidationErrors) { Logger.Error($"{errs.PropertyName}:{errs.ErrorMessage}"); } } throw; } catch (Exception ex) { ExceptionLogger.Log(ex, $"Exception while trying to save a clan {alliance.Clan_ID} to the database."); throw; } }
public static Clan GetClan(long allianceId) { var clan = default(Clan); try { using (var ctx = new MysqlEntities()) { var data = ctx.clan.Find(allianceId); if (data != null) { clan = JsonConvert.DeserializeObject <Clan>(data.Data, Settings2); } } } catch (Exception ex) { ExceptionLogger.Log(ex, "Exception while trying to get alliance from database."); // In case it fails to LoadFromJSON. clan = null; } return(clan); }
public static Level GetLevel(long userId) { var level = default(Level); try { using (var ctx = new MysqlEntities()) { var player = ctx.player.Find(userId); if (player != null) { level = new Level { Avatar = JsonConvert.DeserializeObject <Avatar>(player.Avatar, Settings), Json = player.Village }; } } } catch (Exception ex) { ExceptionLogger.Log(ex, $"Exception while trying to get a level {userId} from the database."); // In case the level instance was already created before the exception. level = null; } return(level); }
internal Player Get(long UserId, DBMS DBMS = Constants.Database, bool Store = true) { if (!this.ContainsKey(UserId)) { Player Player = null; switch (DBMS) { case DBMS.MySQL: using (MysqlEntities Database = new MysqlEntities()) { var Data = Database.PlayerDB.Find(UserId); if (!string.IsNullOrEmpty(Data?.Data)) { if (!string.IsNullOrEmpty(Data?.Data)) { Player = JsonConvert.DeserializeObject <Player>(Data.Data, this.Settings); if (Store) { this.Add(Player); } } } } break; case DBMS.Redis: string Property = Redis.Players.StringGet(UserId.ToString()).ToString(); if (!string.IsNullOrEmpty(Property)) { Player = JsonConvert.DeserializeObject <Logic.Player>(Property, this.Settings); if (Store) { this.Add(Player); } } break; case DBMS.Both: Player = this.Get(UserId, DBMS.Redis, Store); if (Player == null) { Player = this.Get(UserId, DBMS.MySQL, Store); if (Player != null) { this.Save(Player, DBMS.Redis); } } break; } return(Player); } return(this[UserId]); }
internal void AddLevel(Level level) { using (var Ctx = new MysqlEntities()) { var player = new Player { ID = level.Avatar.UserId, Avatar = JsonConvert.SerializeObject(level.Avatar, this.Settings), }; Ctx.Player.Add(player); Ctx.SaveChanges(); } }
internal void Save(Level Player, DBMS DBMS = Constants.Database) { while (true) { switch (DBMS) { case DBMS.MySQL: { if (Constants.IsMono) { Mysql_Backup.Save(Player); } else { using (MysqlEntities Database = new MysqlEntities()) { var Data = Database.Player.Find(Player.Avatar.UserId); if (Data != null) { Data.Data = JsonConvert.SerializeObject(Player.Avatar, this.Settings) + "#:#:#:#" + Player.SaveToJSON(); Database.SaveChanges(); } } } break; } case DBMS.Redis: { Redis.Players.StringSet(Player.Avatar.UserId.ToString(), JsonConvert.SerializeObject(Player.Avatar, this.Settings) + "#:#:#:#" + Player.SaveToJSON(), TimeSpan.FromHours(4)); break; } case DBMS.Both: { this.Save(Player, DBMS.MySQL); DBMS = DBMS.Redis; continue; } } break; } }
public static void RemoveAlliance(Clan alliance) { long Id = alliance.Clan_ID; using (MysqlEntities ctx = new MysqlEntities()) { var clan = ctx.clan.Find(Id); if (clan != null) { ctx.clan.Remove(clan); ctx.SaveChanges(); } } ObjectManager.RemoveInMemoryAlliance(Id); }
internal void Delete(Clan Clan) { if (this.ContainsKey(Clan.Clan_ID)) { this.TryRemove(Clan.Clan_ID); } using (MysqlEntities Database = new MysqlEntities()) { var index = Database.Clan.Find(Clan.Clan_ID); if (index != null) { Database.Clan.Remove(index); } Database.SaveChanges(); } #region Old /* * while (true) * { * switch (DBMS) * { * case DBMS.Mysql: * using (MysqlEntities Database = new MysqlEntities()) * { * var index = Database.Clan.Find(Clan.Clan_ID); * if (index != null) * Database.Clan.Remove(index); * Database.SaveChanges(); * } * break; * case DBMS.Redis: * Redis.Clans.KeyDelete(Clan.Clan_ID.ToString()); * break; * case DBMS.Both: * this.Delete(Clan); * DBMS = DBMS.Redis; * continue; * } * } */ #endregion }
internal async void Save(List <Level> Levels) { using (var Ctx = new MysqlEntities()) { foreach (Level pl in Levels) { lock (pl) { Player p = Ctx.Player.Find(pl.Avatar.UserId); if (p != null) { p.Avatar = JsonConvert.SerializeObject(pl.Avatar, this.Settings); } } } await Ctx.BulkSaveChangesAsync(false); } }
internal static void Save(Level Player) { Player.Avatar.LastSave = DateTime.UtcNow; using (MysqlEntities Database = new MysqlEntities()) { Database.Configuration.AutoDetectChangesEnabled = false; var Data = Database.Player.Find(Player.Avatar.UserId); if (Data != null) { Data.Avatar = JsonConvert.SerializeObject(Player.Avatar, Settings); Data.Village = Player.JSON; Data.Trophies = Player.Avatar.Trophies; Data.FacebookID = Player.Avatar.Facebook.Identifier ?? "#:#:#:#"; Database.Entry(Data).State = EntityState.Modified; } Database.SaveChanges(); } }
public static void CreateAlliance(Clan alliance) { try { using (var ctx = new MysqlEntities()) { var newClan = new clan { Id = alliance.Clan_ID, Data = JsonConvert.SerializeObject(alliance, Settings2) }; ctx.clan.Add(newClan); ctx.SaveChanges(); } } catch (Exception ex) { ExceptionLogger.Log(ex, "Exception while trying to create a new alliance in database."); } }
public static void Save(Level level) { try { using (var ctx = new MysqlEntities()) { ctx.Configuration.AutoDetectChangesEnabled = false; var player = ctx.player.Find(level.Avatar.UserId); if (player != null) { player.Avatar = JsonConvert.SerializeObject(level.Avatar, Settings); player.Village = level.Json; ctx.Entry(player).State = EntityState.Modified; } ctx.SaveChanges(); } } catch (DbEntityValidationException ex) { ExceptionLogger.Log(ex, $"Exception while trying to save a level {level.Avatar.UserId} to the database. Check error for more information."); foreach (var entry in ex.EntityValidationErrors) { foreach (var errs in entry.ValidationErrors) { Logger.Error($"{errs.PropertyName}:{errs.ErrorMessage}"); } } throw; } catch (Exception ex) { ExceptionLogger.Log(ex, $"Exception while trying to save a level {level.Avatar.UserId} to the database."); throw; } }
internal void Save(Logic.Player Player, DBMS DBMS = Constants.Database) { while (true) { switch (DBMS) { case DBMS.MySQL: { using (MysqlEntities Database = new MysqlEntities()) { var Data = Database.PlayerDB.Find(Player.UserId); if (Data != null) { Data.Data = JsonConvert.SerializeObject(Player, this.Settings); Database.SaveChangesAsync(); } } break; } case DBMS.Redis: { Redis.Players.StringSet(Player.UserId.ToString(), JsonConvert.SerializeObject(Player, this.Settings), TimeSpan.FromHours(4)); break; } case DBMS.Both: { this.Save(Player, DBMS.MySQL); DBMS = DBMS.Redis; continue; } } break; } }
public static async Task Save(List <Level> levels) { try { using (var ctx = new MysqlEntities()) { foreach (Level pl in levels) { player p = await ctx.player.FindAsync(pl.Avatar.UserId); //Maybe to use lock instead if (p != null) { p.Avatar = JsonConvert.SerializeObject(pl.Avatar); p.Village = pl.Json; } } await ctx.BulkSaveChangesAsync(); } } catch (DbEntityValidationException ex) { ExceptionLogger.Log(ex, $"Exception while trying to save {levels.Count} of player to the database. Check error for more information."); foreach (var entry in ex.EntityValidationErrors) { foreach (var errs in entry.ValidationErrors) { Logger.Error($"{errs.PropertyName}:{errs.ErrorMessage}"); } } throw; } catch (Exception ex) { ExceptionLogger.Log(ex, $"Exception while trying to savesave {levels.Count} of player to the database."); throw; } }
public static void CreateLevel(Avatar level) { try { using (var ctx = new MysqlEntities()) { var newPlayer = new player { Id = level.UserId, Avatar = JsonConvert.SerializeObject(level, Settings), }; ctx.player.Add(newPlayer); ctx.SaveChanges(); } } catch (Exception ex) { ExceptionLogger.Log(ex, "Exception while trying to create a new player account in database."); } }
internal void Save(Battle _Battle) { try { using (MysqlEntities Database = new MysqlEntities()) { Database.Configuration.AutoDetectChangesEnabled = false; Database.Configuration.ValidateOnSaveEnabled = false; var Data = Database.Battle.Find(_Battle.Battle_ID); if (Data != null) { Data.Data = JsonConvert.SerializeObject(_Battle, this.Settings); Database.Entry(Data).State = EntityState.Modified; } Database.SaveChanges(); } } catch (DbEntityValidationException ex) { Loggers.Log( ex + $" Exception while trying to save a battle {_Battle.Battle_ID} to the database. Check error for more information."); foreach (var entry in ex.EntityValidationErrors) { foreach (var errs in entry.ValidationErrors) { Loggers.Log($"{errs.PropertyName}:{errs.ErrorMessage}"); } } throw; } catch (Exception ex) { Loggers.Log(ex + $" Exception while trying to save a battle {_Battle.Battle_ID} to the database."); throw; } }
internal Battle New(Level _Attacker, Level _Defender, bool Store = true) { _Attacker.Avatar.Battle_ID = this.Seed; var _Battle = new Battle(this.Seed++, _Attacker, _Defender); if (Store) { this.Add(_Battle); } using (MysqlEntities Database = new MysqlEntities()) { Database.Battle.Add(new Database.Battle { ID = _Battle.Battle_ID, Data = JsonConvert.SerializeObject(_Battle, this.Settings) }); Database.SaveChanges(); } return(_Battle); }
internal Battle Get(long _BattleID, bool Store = true) { if (!this.ContainsKey(_BattleID)) { Battle _Battle = null; using (MysqlEntities Database = new MysqlEntities()) { Database.Battle Data = Database.Battle.Find(_BattleID); if (!string.IsNullOrEmpty(Data?.Data)) { _Battle = JsonConvert.DeserializeObject <Battle>(Data.Data, this.Settings); if (Store) { this.Add(_Battle); } } } return(_Battle); } return(this[_BattleID]); }
public static async Task Save(List <Clan> alliances) { try { using (MysqlEntities ctx = new MysqlEntities()) { foreach (var alliance in alliances) { var c = await ctx.clan.FindAsync((int)alliance.Clan_ID); if (c != null) { c.Data = JsonConvert.SerializeObject(alliance, Settings2); } } await ctx.BulkSaveChangesAsync(); } } catch (DbEntityValidationException ex) { ExceptionLogger.Log(ex, $"Exception while trying to save {alliances.Count} of clan to the database. Check error for more information."); foreach (var entry in ex.EntityValidationErrors) { foreach (var errs in entry.ValidationErrors) { Logger.Error($"{errs.PropertyName}:{errs.ErrorMessage}"); } } throw; } catch (Exception ex) { ExceptionLogger.Log(ex, $"Exception while trying to save {alliances.Count} of clan to the database."); throw; } }
internal void Save(Logic.Clan Clan, Logic.Enums.DBMS DBMS = Constants.Database) { while (true) { switch (DBMS) { case Logic.Enums.DBMS.MySQL: { using (MysqlEntities Database = new MysqlEntities()) { var Data = Database.ClanDB.Find(Clan.ClanID); if (Data != null) { Data.Data = JsonConvert.SerializeObject(Clan, this.Settings); Database.SaveChanges(); } } break; } case Logic.Enums.DBMS.Redis: { Redis.Clans.StringSet(Clan.ClanID.ToString(), JsonConvert.SerializeObject(Clan, this.Settings), TimeSpan.FromHours(4)); break; } case Logic.Enums.DBMS.Both: { this.Save(Clan, DBMS.MySQL); DBMS = Logic.Enums.DBMS.Redis; continue; } } break; } }
// Used whenever the clients searches for an alliance however no alliances is loaded in memory. public static List <Clan> GetAllAlliances() { var alliances = new List <Clan>(); try { using (var ctx = new MysqlEntities()) { var clans = ctx.clan; Parallel.ForEach(clans, c => { Clan clan = default(Clan); clan = JsonConvert.DeserializeObject <Clan>(c.Data, Settings2); alliances.Add(clan); }); } } catch (Exception ex) { ExceptionLogger.Log(ex, "Exception while trying to get all alliances from database."); } return(alliances); }
internal async Task Save() { using (MysqlEntities Database = new MysqlEntities()) { Database.Configuration.AutoDetectChangesEnabled = false; Database.Configuration.ValidateOnSaveEnabled = false; foreach (var Battle in this.Values.ToList()) { lock (Battle) { var Data = Database.Battle.Find(Battle.Battle_ID); if (Data != null) { Data.Data = JsonConvert.SerializeObject(Battle, this.Settings); Database.Entry(Data).State = EntityState.Modified; } Database.SaveChanges(); } } await Database.BulkSaveChangesAsync(); } /* * while (true) * { * switch (DBMS) * { * case DBMS.Mysql: * { * * using (MysqlEntities Database = new MysqlEntities()) * { * Database.Configuration.AutoDetectChangesEnabled = false; * Database.Configuration.ValidateOnSaveEnabled = false; * foreach (var Battle in this.Values.ToList()) * { * lock (Battle) * { * var Data = Database.Battle.Find(Battle.Battle_ID); * * if (Data != null) * { * Data.Data = JsonConvert.SerializeObject(Battle, this.Settings); * Database.Entry(Data).State = EntityState.Modified; * } * } * } * await Database.SaveChangesAsync(); * } * break; * } * * case DBMS.Redis: * { * foreach (var Battle in this.Values.ToList()) * { * Redis.Battles.StringSet(Battle.Battle_ID.ToString(), * JsonConvert.SerializeObject(Battle, this.Settings), TimeSpan.FromHours(4)); * } * break; * } * * case DBMS.Both: * { * await this.Save(DBMS.Mysql); * DBMS = DBMS.Redis; * continue; * } * } * break; * }*/ }
internal static Level New(long UserId = 0, string token = "", bool Store = true) { lock (s_sync) { if (UserId == 0 || Seed == UserId) { UserId = Seed++; } else { if (UserId > Seed) { Seed = UserId + 1; } } } var Player = new Level(UserId); if (string.IsNullOrEmpty(token)) { if (string.IsNullOrEmpty(Player.Avatar.Token)) { for (int i = 0; i < 20; i++) { char Letter = (char)Resources.Random.Next('A', 'Z'); Player.Avatar.Token += Letter; } } } else { Player.Avatar.Token = token; } if (string.IsNullOrEmpty(Player.Avatar.Password)) { for (int i = 0; i < 6; i++) { char Letter = (char)Resources.Random.Next('A', 'Z'); char Number = (char)Resources.Random.Next('1', '9'); Player.Avatar.Password += Letter; Player.Avatar.Password += Number; } } Player.JSON = Files.Home.Starting_Home; if (Store) { Add(Player); } using (MysqlEntities Database = new MysqlEntities()) { Database.Player.Add(new Database.Player { ID = Player.Avatar.UserId, Avatar = JsonConvert.SerializeObject(Player.Avatar, Settings), Village = Player.JSON, FacebookID = "#:#:#:#", }); Database.SaveChanges(); } return(Player); }
internal Logic.Clan New(long ClanId = 0, Logic.Enums.DBMS DBMS = Constants.Database, bool Store = true) { Logic.Clan Clan = null; if (ClanId == 0) { lock (this.Gate) { Clan = new Logic.Clan(this.Seed++); } } else { Clan = new Logic.Clan(ClanId); } while (true) { switch (DBMS) { case Logic.Enums.DBMS.MySQL: { using (MysqlEntities Database = new MysqlEntities()) { Database.ClanDB.Add(new Database.Clan { ID = Clan.ClanID, Data = JsonConvert.SerializeObject(Clan, this.Settings) }); Database.SaveChangesAsync(); } if (Store) { this.Add(Clan); } break; } case Logic.Enums.DBMS.Redis: { this.Save(Clan, DBMS); if (Store) { this.Add(Clan); } break; } case Logic.Enums.DBMS.Both: { this.Save(Clan, DBMS); DBMS = Logic.Enums.DBMS.MySQL; if (Store) { this.Add(Clan); } continue; } } break; } return(Clan); }
internal Clan New(long ClanId = 0, bool Store = true) { var Clan = ClanId == 0 ? new Clan(this.Seed++) : new Clan(ClanId); if (Store) { this.Add(Clan); } using (MysqlEntities Database = new MysqlEntities()) { Database.Clan.Add(new Database.Clan { ID = Clan.Clan_ID, Data = JsonConvert.SerializeObject(Clan, this.Settings) }); Database.SaveChanges(); } /* * while (true) * { * switch (DBMS) * { * case DBMS.Mysql: * { * using (MysqlEntities Database = new MysqlEntities()) * { * Database.Clan.Add(new Database.Clan * { * ID = Clan.Clan_ID, * Data = JsonConvert.SerializeObject(Clan, this.Settings) * }); * * Database.SaveChanges(); * } * * if (Store) * { * this.Add(Clan); * } * break; * } * * case DBMS.Redis: * { * this.Save(Clan, DBMS.Redis); * * if (Store) * { * this.Add(Clan); * } * break; * } * * case DBMS.Both: * { * this.Save(Clan, DBMS.Mysql); * DBMS = DBMS.Redis; * * if (Store) * { * this.Add(Clan); * } * * continue; * } * } * break; * }*/ return(Clan); }