using MySqlConnector; using skyscraper5.Skyscraper; using skyscraper5.Skyscraper.Headless; using skyscraper5.Skyscraper.Scraper.Storage.Split; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace skyscraper5.Data.MySql { public partial class MySqlDataStorage : DataStorage { public bool ImportFileKnown(FileInfo fi) { using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString())) { connection.Open(); using (MySqlCommand mySqlCommand = connection.CreateCommand()) { mySqlCommand.CommandText = "SELECT dateadded FROM skyscraper_imported_streams WHERE filename = @filename"; mySqlCommand.Parameters.Add("filename", MySqlDbType.VarChar); mySqlCommand.Parameters["filename"].Value = fi.Name.ToLowerInvariant(); MySqlDataReader dataReader = mySqlCommand.ExecuteReader(); bool result = dataReader.Read(); dataReader.Close(); connection.Close(); return result; } } } public void ImportMarkFileAsKnown(FileInfo fi, TimeSpan duration) { using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString())) { connection.Open(); MySqlCommand command = connection.CreateCommand(); command.CommandText = "INSERT INTO skyscraper_imported_streams (filename, debugger, time_taken) VALUES (@filename, @debugger, @time_taken)"; command.Parameters.AddWithValue("@filename", fi.Name.ToLowerInvariant()); command.Parameters.AddWithValue("@debugger", Debugger.IsAttached); command.Parameters.AddWithValue("@time_taken", (int)duration.TotalSeconds); command.ExecuteNonQuery(); connection.Close(); } } public List UiSatellitesListAll() { List result = new List(); using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString())) { connection.Open(); using (MySqlCommand command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM skyscraper_satellites"; MySqlDataReader dataReader = command.ExecuteReader(); while (dataReader.Read()) { SatellitePosition satellitePosition = new SatellitePosition(); satellitePosition.angle = dataReader.GetFloat(2); satellitePosition.cardinalDirection = dataReader.GetBoolean(3) ? 0 : 1; satellitePosition.name = dataReader.GetString(4); result.Add(satellitePosition); } } connection.Close(); } return result; } public HeadlessJob GetQueuedJob() { using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString())) { connection.Open(); using (MySqlCommand command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM skyscraper_queued_jobs WHERE done = FALSE"; MySqlDataReader mySqlDataReader = command.ExecuteReader(); HeadlessJob result = null; if (mySqlDataReader.Read()) { result = new HeadlessJob(); result.uuid = Guid.Parse(mySqlDataReader.GetString(0)); result.jobType = (HeadlessJobType)mySqlDataReader.GetInt32(2); if (!mySqlDataReader.IsDBNull(3)) result.iArg1 = mySqlDataReader.GetInt32(3); if (!mySqlDataReader.IsDBNull(4)) result.sArg1 = mySqlDataReader.GetString(4); result.isSynthetic = false; } connection.Close(); return result; } } } public void SetQueuedJobComplete(HeadlessJob headlessJob) { using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString())) { connection.Open(); using (MySqlCommand command = connection.CreateCommand()) { command.CommandText = "UPDATE skyscraper_queued_jobs SET done = TRUE WHERE uuid = @uuid"; command.Parameters.Add("uuid", MySqlDbType.VarChar); command.Parameters["@uuid"].Value = headlessJob.uuid.ToString(); command.ExecuteNonQuery(); connection.Close(); } } } } }