예제 #1
0
        public PyDataType GetCharacterSelectionInfo(int characterID, int accountID)
        {
            MySqlConnection connection = null;
            MySqlDataReader reader     = Database.PrepareQuery(
                ref connection,
                "SELECT " +
                " itemName AS shortName,bloodlineID,gender,bounty,chrInformation.corporationID,allianceID,title,startDateTime,createDateTime," +
                " securityRating,chrInformation.balance,chrInformation.stationID,solarSystemID,constellationID,regionID," +
                " petitionMessage,logonMinutes,tickerName" +
                " FROM chrInformation " +
                "	LEFT JOIN eveNames ON characterID = itemID"+
                "	LEFT JOIN corporation USING (corporationID)"+
                "	LEFT JOIN bloodlineTypes USING (typeID)"+
                " WHERE characterID=@characterID AND accountID = @accountID",
                new Dictionary <string, object>()
            {
                { "@characterID", characterID },
                { "@accountID", accountID }
            }
                );

            using (connection)
                using (reader)
                {
                    return(Rowset.FromMySqlDataReader(reader));
                }
        }
예제 #2
0
        public PyDataType GetCharacterList(int accountID)
        {
            MySqlConnection connection = null;
            MySqlDataReader reader     = Database.PrepareQuery(ref connection,
                                                               "SELECT" +
                                                               " characterID, itemName AS characterName, 0 as deletePrepareDateTime," +
                                                               " gender, accessoryID, beardID, costumeID, decoID, eyebrowsID, eyesID, hairID," +
                                                               " lipstickID, makeupID, skinID, backgroundID, lightID," +
                                                               " headRotation1, headRotation2, headRotation3, eyeRotation1," +
                                                               " eyeRotation2, eyeRotation3, camPos1, camPos2, camPos3," +
                                                               " morph1e, morph1n, morph1s, morph1w, morph2e, morph2n," +
                                                               " morph2s, morph2w, morph3e, morph3n, morph3s, morph3w," +
                                                               " morph4e, morph4n, morph4s, morph4w" +
                                                               " FROM chrInformation " +
                                                               "	LEFT JOIN eveNames ON characterID = itemID"+
                                                               " WHERE accountID = @accountID",
                                                               new Dictionary <string, object>()
            {
                { "@accountID", accountID }
            }
                                                               );

            using (connection)
                using (reader)
                {
                    return(Rowset.FromMySqlDataReader(reader));
                }
        }
예제 #3
0
        /// <summary>
        /// Runs one prepared query with the given values as parameters and returns a Rowset representing the result
        /// </summary>
        /// <param name="query">The prepared query</param>
        /// <param name="values">The key-value pair of values to use when running the query</param>
        /// <returns>The Rowset object representing the result</returns>
        public Rowset PrepareRowsetQuery(string query, Dictionary <string, object> values)
        {
            try
            {
                MySqlConnection connection = null;
                // create the correct command
                MySqlCommand command = this.PrepareQuery(ref connection, query);

                // add values
                foreach (KeyValuePair <string, object> pair in values)
                {
                    command.Parameters.AddWithValue(pair.Key, pair.Value);
                }

                MySqlDataReader reader = command.ExecuteReader();

                using (connection)
                    using (reader)
                    {
                        // run the prepared statement
                        return(Rowset.FromMySqlDataReader(reader));
                    }
            }
            catch (Exception e)
            {
                Log.Error($"MySQL error: {e.Message}");
                throw;
            }
        }
예제 #4
0
        public void Load(string service, string method, string query, CacheObjectType type)
        {
            Log.Debug($"Loading cache data for {service}::{method} of type {type}");

            // if the cache already exists do not generate it again!
            if (this.Exists(service, method) == true)
            {
                return;
            }

            try
            {
                MySqlConnection connection  = null;
                MySqlDataReader reader      = Database.Query(ref connection, query);
                PyDataType      cacheObject = null;

                using (connection)
                    using (reader)
                    {
                        switch (type)
                        {
                        case CacheObjectType.Rowset:
                            cacheObject = Rowset.FromMySqlDataReader(reader);
                            break;

                        case CacheObjectType.CRowset:
                            cacheObject = CRowset.FromMySqlDataReader(reader);
                            break;

                        case CacheObjectType.TupleSet:
                            cacheObject = TupleSet.FromMySqlDataReader(reader);
                            break;

                        case CacheObjectType.PackedRowList:
                            cacheObject = PyPackedRowList.FromMySqlDataReader(reader);
                            break;

                        case CacheObjectType.IntIntDict:
                            cacheObject = IntIntDictionary.FromMySqlDataReader(reader);
                            break;

                        case CacheObjectType.IndexRowset:
                            cacheObject = IndexRowset.FromMySqlDataReader(reader, 0);
                            break;
                        }

                        StoreCall(service, method, cacheObject, DateTime.UtcNow.ToFileTimeUtc());
                    }
            }
            catch (Exception)
            {
                Log.Error($"Cannot generate cache data for {service}::{method}");
                throw;
            }
        }
예제 #5
0
        public PyDataType GetKeyMap()
        {
            MySqlConnection connection = null;
            MySqlDataReader reader     = Database.Query(ref connection,
                                                        "SELECT accountKey as keyID, accountType as keyType, accountName as keyName, description FROM market_keyMap"
                                                        );

            using (connection)
                using (reader)
                {
                    return(Rowset.FromMySqlDataReader(reader));
                }
        }
예제 #6
0
        /// <summary>
        /// Helper method that queries the cached object and converts it to the proper type to be stored
        /// </summary>
        /// <param name="query">The query to run</param>
        /// <param name="type">The type of object to store</param>
        /// <returns>The final object to be used by the cache</returns>
        private PyDataType QueryCacheObject(string query, CacheObjectType type)
        {
            MySqlConnection connection = null;
            MySqlDataReader reader     = Database.Query(ref connection, query);

            using (connection)
                using (reader)
                {
                    return(type switch
                    {
                        CacheObjectType.Rowset => Rowset.FromMySqlDataReader(Database, reader),
                        CacheObjectType.CRowset => CRowset.FromMySqlDataReader(Database, reader),
                        CacheObjectType.TupleSet => TupleSet.FromMySqlDataReader(Database, reader),
                        CacheObjectType.PackedRowList => PyPackedRowList.FromMySqlDataReader(Database, reader),
                        CacheObjectType.IntIntDict => IntIntDictionary.FromMySqlDataReader(reader),
                        CacheObjectType.IndexRowset => IndexRowset.FromMySqlDataReader(Database, reader, 0),
                        _ => null
                    });
예제 #7
0
        private void Load(string name, string query, CacheObjectType type)
        {
            Log.Debug($"Loading cache data for {name} of type {type}");

            try
            {
                MySqlConnection connection  = null;
                MySqlDataReader reader      = Database.Query(ref connection, query);
                PyDataType      cacheObject = null;

                using (connection)
                    using (reader)
                    {
                        switch (type)
                        {
                        case CacheObjectType.Rowset:
                            cacheObject = Rowset.FromMySqlDataReader(reader);
                            break;

                        case CacheObjectType.CRowset:
                            cacheObject = CRowset.FromMySqlDataReader(reader);
                            break;

                        case CacheObjectType.TupleSet:
                            cacheObject = TupleSet.FromMySqlDataReader(reader);
                            break;

                        case CacheObjectType.PackedRowList:
                            cacheObject = PyPackedRowList.FromMySqlDataReader(reader);
                            break;
                        }

                        Store(name, cacheObject, DateTime.Now.ToFileTimeUtc());
                    }
            }
            catch (Exception e)
            {
                Log.Error($"Cannot generate cache data for {name}");
                throw;
            }
        }
예제 #8
0
        /// <summary>
        /// Runs one prepared query with the given values as parameters and returns a CRowset representing the result
        /// </summary>
        /// <param name="query">The prepared query</param>
        /// <returns>The Rowset object representing the result</returns>
        public Rowset PrepareRowsetQuery(string query)
        {
            try
            {
                MySqlConnection connection = null;
                // create the correct command
                MySqlCommand command = this.PrepareQuery(ref connection, query);

                MySqlDataReader reader = command.ExecuteReader();

                using (connection)
                    using (reader)
                    {
                        // run the prepared statement
                        return(Rowset.FromMySqlDataReader(reader));
                    }
            }
            catch (Exception e)
            {
                Log.Error($"MySQL error: {e.Message}");
                throw;
            }
        }