コード例 #1
0
ファイル: Clans.cs プロジェクト: presidentofgoblin/Cerberus
        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;
             * }*/
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
ファイル: Clans.cs プロジェクト: presidentofgoblin/Cerberus
        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]);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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]);
        }
コード例 #6
0
 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;
     }
 }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
ファイル: Players.cs プロジェクト: presidentofgoblin/Cerberus
        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]);
        }
コード例 #10
0
        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();
            }
        }
コード例 #11
0
        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;
            }
        }
コード例 #12
0
        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);
        }
コード例 #13
0
ファイル: Clans.cs プロジェクト: archerland/ClashLand-1
        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
        }
コード例 #14
0
 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);
     }
 }
コード例 #15
0
        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();
            }
        }
コード例 #16
0
        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.");
            }
        }
コード例 #17
0
        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;
            }
        }
コード例 #18
0
ファイル: Players.cs プロジェクト: presidentofgoblin/Cerberus
        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;
            }
        }
コード例 #19
0
        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;
            }
        }
コード例 #20
0
ファイル: DatabaseManager.cs プロジェクト: w4x51m/Cerberus-V3
        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.");
            }
        }
コード例 #21
0
ファイル: Battles.cs プロジェクト: w4x51m/clash-of-land-1
        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;
            }
        }
コード例 #22
0
ファイル: Battles.cs プロジェクト: w4x51m/clash-of-land-1
        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);
        }
コード例 #23
0
ファイル: Battles.cs プロジェクト: w4x51m/clash-of-land-1
        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]);
        }
コード例 #24
0
        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;
            }
        }
コード例 #25
0
ファイル: Clans.cs プロジェクト: presidentofgoblin/Cerberus
        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;
            }
        }
コード例 #26
0
        // 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);
        }
コード例 #27
0
ファイル: Battles.cs プロジェクト: w4x51m/clash-of-land-1
        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;
             * }*/
        }
コード例 #28
0
        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);
        }
コード例 #29
0
ファイル: Clans.cs プロジェクト: presidentofgoblin/Cerberus
        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);
        }
コード例 #30
0
ファイル: Clans.cs プロジェクト: archerland/ClashLand-1
        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);
        }