示例#1
0
        /// <summary>
        /// Saves the specified clan in the specified database.
        /// </summary>
        /// <param name="Clan">The clan.</param>
        /// <param name="DBMS">The DBMS.</param>
        internal void Save(Clan Clan, DBMS DBMS = Constants.Database)
        {
            switch (DBMS)
            {
            case DBMS.MySQL:
            {
                using (GCS_MySQL Database = new GCS_MySQL())
                {
                    Core.Database.Models.Clans Data = Database.Clans.Find(Clan.HighID, Clan.LowID);

                    if (Data != null)
                    {
                        // lock (Clan.Members.Gate)
                        {
                            Data.Data = JsonConvert.SerializeObject(Clan, this.Settings);
                        }
                    }

                    Database.SaveChangesAsync();
                }

                break;
            }

            case DBMS.Redis:
            {
                // lock (Clan.Members.Gate)
                {
                    Redis.Clans.StringSetAsync(Clan.ToString(), JsonConvert.SerializeObject(Clan, this.Settings), TimeSpan.FromMinutes(30));
                }

                break;
            }

            case DBMS.Both:
            {
                this.Save(Clan, DBMS.MySQL);
                this.Save(Clan, DBMS.Redis);
                break;
            }
            }
        }
示例#2
0
        /// <summary>
        /// Gets the clan using the specified identifier in the specified database.
        /// </summary>
        /// <param name="HighID">The high identifier.</param>
        /// <param name="LowID">The low identifier.</param>
        /// <param name="DBMS">The DBMS.</param>
        /// <param name="Store">if set to <c>true</c> [store].</param>
        internal Clan Get(int HighID, int LowID, DBMS DBMS = Constants.Database, bool Store = true)
        {
            if (!this.ContainsKey(LowID))
            {
                Clan Clan = null;

                switch (DBMS)
                {
                case DBMS.MySQL:
                {
                    using (GCS_MySQL Database = new GCS_MySQL())
                    {
                        Core.Database.Models.Clans Data = Database.Clans.Find(HighID, LowID);

                        if (Data != null)
                        {
                            if (!string.IsNullOrEmpty(Data.Data))
                            {
                                Clan = new Clan(HighID, LowID);

                                JsonConvert.PopulateObject(Data.Data, Clan, this.Settings);

                                if (Store)
                                {
                                    this.Add(Clan);
                                }
                            }
                        }
                    }

                    break;
                }

                case DBMS.Redis:
                {
                    string Data = Redis.Clans.StringGet(HighID + "-" + LowID).ToString();

                    if (!string.IsNullOrEmpty(Data))
                    {
                        Clan = new Clan(HighID, LowID);

                        JsonConvert.PopulateObject(Data, Clan, this.Settings);

                        if (Store)
                        {
                            this.Add(Clan);
                        }
                    }

                    break;
                }

                case DBMS.Both:
                {
                    Clan = this.Get(HighID, LowID, DBMS.Redis, Store);

                    if (Clan == null)
                    {
                        Clan = this.Get(HighID, LowID, DBMS.MySQL, Store);

                        if (Clan != null)
                        {
                            this.Save(Clan, DBMS.Redis);
                        }
                    }

                    break;
                }
                }

                return(Clan);
            }

            return(this[LowID]);
        }