298 lines
12 KiB
C#
298 lines
12 KiB
C#
using Npgsql;
|
|
using NpgsqlTypes;
|
|
using skyscraper5.Skyscraper;
|
|
using skyscraper5.Skyscraper.Equipment;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace skyscraper5.Data.PostgreSql
|
|
{
|
|
public partial class PostgresqlDataStore
|
|
{
|
|
private int uiVersion;
|
|
|
|
public void UiSetVersion(int version)
|
|
{
|
|
this.uiVersion = version;
|
|
}
|
|
|
|
public List<LnbType> UiLnbTypesListAll()
|
|
{
|
|
List<LnbType> lnbTypes = new List<LnbType>();
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText = "SELECT * FROM skyscraper5_lnbs";
|
|
NpgsqlDataReader dataReader = cmd.ExecuteReader();
|
|
while (dataReader.Read())
|
|
{
|
|
int id = dataReader.GetInt32(0);
|
|
DateTime added = dataReader.GetDateTime(1);
|
|
string name = dataReader.GetString(2);
|
|
int lof1 = dataReader.GetInt32(3);
|
|
int lof2 = dataReader.GetInt32(4);
|
|
int lofSw = dataReader.GetInt32(5);
|
|
int minFreq = dataReader.GetInt32(6);
|
|
int maxFreq = dataReader.GetInt32(7);
|
|
lnbTypes.Add(new LnbType(name, lof1, lof2, lofSw, minFreq, maxFreq) { DateAdded = added, Id = id });
|
|
}
|
|
|
|
dataReader.Close();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
|
|
return lnbTypes;
|
|
}
|
|
|
|
public void UiLnbTypesAdd(LnbType defaultLnbType)
|
|
{
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText =
|
|
"INSERT INTO skyscraper5_lnbs (name, lof1, lof2, lof_sw, min_freq, max_freq) VALUES (@name,@lof1,@lof2,@lof_sw,@min_freq,@max_freq)";
|
|
cmd.Parameters.AddWithValue("@name", NpgsqlDbType.Text, defaultLnbType.Name);
|
|
cmd.Parameters.AddWithValue("@lof1", NpgsqlDbType.Integer, defaultLnbType.Lof1);
|
|
cmd.Parameters.AddWithValue("@lof2", NpgsqlDbType.Integer, defaultLnbType.Lof2);
|
|
cmd.Parameters.AddWithValue("@lof_sw", NpgsqlDbType.Integer, defaultLnbType.LofSw);
|
|
cmd.Parameters.AddWithValue("@min_freq", NpgsqlDbType.Integer, defaultLnbType.MinimumFrequency);
|
|
cmd.Parameters.AddWithValue("@max_freq", NpgsqlDbType.Integer, defaultLnbType.MaximumFrequency);
|
|
cmd.ExecuteNonQuery();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
}
|
|
|
|
public List<DishType> UiDishTypesListAll()
|
|
{
|
|
List<DishType> result = new List<DishType>();
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText = "SELECT * FROM skyscraper5_dishes";
|
|
NpgsqlDataReader dataReader = cmd.ExecuteReader();
|
|
while (dataReader.Read())
|
|
{
|
|
int id = dataReader.GetInt32(0);
|
|
DateTime added = dataReader.GetDateTime(1);
|
|
string name = dataReader.GetString(2);
|
|
int diameter = dataReader.GetInt32(3);
|
|
DishShape shape = (DishShape)dataReader.GetInt32(4);
|
|
result.Add(new DishType(name, diameter, shape) { DateAdded = added, Id = id });
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public void UiDishTypesAdd(DishType defaultDishType)
|
|
{
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText = "INSERT INTO skyscraper5_dishes (name, diameter, shape) VALUES (@name,@diameter,@shape)";
|
|
cmd.Parameters.AddWithValue("@name", NpgsqlDbType.Text, defaultDishType.Name);
|
|
cmd.Parameters.AddWithValue("@diameter", NpgsqlDbType.Integer, defaultDishType.Diameter);
|
|
cmd.Parameters.AddWithValue("@shape", NpgsqlDbType.Integer, (int)defaultDishType.Shape);
|
|
cmd.ExecuteNonQuery();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
}
|
|
|
|
|
|
public List<SatellitePosition> UiSatellitesListAll()
|
|
{
|
|
List<SatellitePosition> positions = new List<SatellitePosition>();
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText = "SELECT * FROM skyscraper5_satellite_positions";
|
|
NpgsqlDataReader reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
float angle = (float)reader.GetDouble(0);
|
|
int cardinal = reader.GetInt32(1);
|
|
string name = reader.GetString(2);
|
|
SatellitePosition child = new SatellitePosition(angle, cardinal, name);
|
|
positions.Add(child);
|
|
}
|
|
|
|
reader.Close();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
|
|
return positions;
|
|
}
|
|
|
|
public void UiSatellitesAdd(SatellitePosition newPosition)
|
|
{
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText =
|
|
"insert into skyscraper5_satellite_positions (angle, cardinal, name, keyversion, key) " +
|
|
"values (@angle, @cardinal, @name, @keyversion, @key)";
|
|
cmd.Parameters.AddWithValue("@angle", NpgsqlDbType.Real, newPosition.angle);
|
|
cmd.Parameters.AddWithValue("@cardinal", NpgsqlDbType.Integer, newPosition.cardinalDirection);
|
|
cmd.Parameters.AddWithValue("@name", NpgsqlDbType.Text, newPosition.name);
|
|
cmd.Parameters.AddWithValue("@keyversion", NpgsqlDbType.Integer, uiVersion);
|
|
cmd.Parameters.AddWithValue("@key", NpgsqlDbType.Text, newPosition.Checksum.ToString());
|
|
cmd.ExecuteNonQuery();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
}
|
|
|
|
public void UiSatellitesDelete(SatellitePosition satellitePosition)
|
|
{
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText =
|
|
"DELETE FROM skyscraper5_satellite_positions WHERE keyversion = @keyversion AND key = @key";
|
|
cmd.Parameters.AddWithValue("@keyversion", NpgsqlDbType.Integer, uiVersion);
|
|
cmd.Parameters.AddWithValue("@key", NpgsqlDbType.Text, satellitePosition.Checksum.ToString());
|
|
cmd.ExecuteNonQuery();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
}
|
|
|
|
public bool UiTunerTestFor(TunerMetadata tuner)
|
|
{
|
|
bool result;
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText =
|
|
"SELECT dateadded FROM skyscraper5_tuners WHERE mac = @mac AND satkeyversion = @satkeyversion";
|
|
cmd.Parameters.AddWithValue("@mac", NpgsqlDbType.Varchar, tuner.MacAddress.ToString());
|
|
cmd.Parameters.AddWithValue("@satkeyversion", NpgsqlDbType.Integer, uiVersion);
|
|
NpgsqlDataReader reader = cmd.ExecuteReader();
|
|
result = reader.Read();
|
|
reader.Close();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public void UiTunerUpdate(TunerMetadata tuner)
|
|
{
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText = "UPDATE skyscraper5_tuners " +
|
|
"SET diseqc_type = @diseqc_type, sat1 = @sat1, sat2 = @sat2, sat3 = @sat3, sat4 = @sat4," +
|
|
" lnb1 = @lnb1, lnb2 = @lnb2, lnb3 = @lnb3, lnb4 = @lnb4," +
|
|
" dish1 =@dish1,dish2 =@dish2,dish3 =@dish3,dish4 =@dish4 " +
|
|
"WHERE mac = @mac AND satkeyversion = @satkeyversion";
|
|
cmd.Parameters.AddWithValue("@diseqc_type", NpgsqlDbType.Integer, (int)tuner.DiseqcType);
|
|
cmd.Parameters.AddWithValue("@sat1", NpgsqlDbType.Integer, tuner.Satellites[0]);
|
|
cmd.Parameters.AddWithValue("@sat2", NpgsqlDbType.Integer, tuner.Satellites[1]);
|
|
cmd.Parameters.AddWithValue("@sat3", NpgsqlDbType.Integer, tuner.Satellites[2]);
|
|
cmd.Parameters.AddWithValue("@sat4", NpgsqlDbType.Integer, tuner.Satellites[3]);
|
|
cmd.Parameters.AddWithValue("@mac", NpgsqlDbType.Varchar, tuner.MacAddress.ToString());
|
|
cmd.Parameters.AddWithValue("@satkeyversion", NpgsqlDbType.Integer, uiVersion);
|
|
cmd.Parameters.AddWithValue("@lnb1", NpgsqlDbType.Integer, tuner.Lnbs[0]);
|
|
cmd.Parameters.AddWithValue("@lnb2", NpgsqlDbType.Integer, tuner.Lnbs[1]);
|
|
cmd.Parameters.AddWithValue("@lnb3", NpgsqlDbType.Integer, tuner.Lnbs[2]);
|
|
cmd.Parameters.AddWithValue("@lnb4", NpgsqlDbType.Integer, tuner.Lnbs[3]);
|
|
cmd.Parameters.AddWithValue("@dish1", NpgsqlDbType.Integer, tuner.Dishes[0]);
|
|
cmd.Parameters.AddWithValue("@dish2", NpgsqlDbType.Integer, tuner.Dishes[1]);
|
|
cmd.Parameters.AddWithValue("@dish3", NpgsqlDbType.Integer, tuner.Dishes[2]);
|
|
cmd.Parameters.AddWithValue("@dish4", NpgsqlDbType.Integer, tuner.Dishes[3]);
|
|
cmd.ExecuteNonQuery();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
}
|
|
|
|
public void UiTunerInsert(TunerMetadata tuner)
|
|
{
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText =
|
|
"insert into skyscraper5_tuners (mac, vindex, vname, v_std_type, caps, diseqc_type, sat1, sat2, sat3, sat4, satkeyversion, lnb1, lnb2, lnb3, lnb4, dish1, dish2, dish3, dish4) " +
|
|
"values " +
|
|
"(@mac, @vindex, @vname, @v_std_type, @caps, @diseqc_type, @sat1, @sat2, @sat3, @sat4, @satkeyversion, @lnb1, @lnb2, @lnb3, @lnb4, @dish1, @dish2, @dish3, @dish4)";
|
|
cmd.Parameters.AddWithValue("@mac", NpgsqlDbType.Varchar, tuner.MacAddress.ToString());
|
|
cmd.Parameters.AddWithValue("@vindex", NpgsqlDbType.Integer, tuner.Index);
|
|
cmd.Parameters.AddWithValue("@vname", NpgsqlDbType.Text, tuner.Name);
|
|
cmd.Parameters.AddWithValue("@v_std_type", NpgsqlDbType.Integer, (int)tuner.Type);
|
|
cmd.Parameters.AddWithValue("@caps", NpgsqlDbType.Integer, (int)tuner.Caps);
|
|
cmd.Parameters.AddWithValue("@diseqc_type", NpgsqlDbType.Integer, (int)tuner.DiseqcType);
|
|
cmd.Parameters.AddWithValue("@sat1", NpgsqlDbType.Integer, tuner.Satellites[0]);
|
|
cmd.Parameters.AddWithValue("@sat2", NpgsqlDbType.Integer, tuner.Satellites[1]);
|
|
cmd.Parameters.AddWithValue("@sat3", NpgsqlDbType.Integer, tuner.Satellites[2]);
|
|
cmd.Parameters.AddWithValue("@sat4", NpgsqlDbType.Integer, tuner.Satellites[3]);
|
|
cmd.Parameters.AddWithValue("@satkeyversion", NpgsqlDbType.Integer, uiVersion);
|
|
cmd.Parameters.AddWithValue("@lnb1", NpgsqlDbType.Integer, tuner.Lnbs[0]);
|
|
cmd.Parameters.AddWithValue("@lnb2", NpgsqlDbType.Integer, tuner.Lnbs[1]);
|
|
cmd.Parameters.AddWithValue("@lnb3", NpgsqlDbType.Integer, tuner.Lnbs[2]);
|
|
cmd.Parameters.AddWithValue("@lnb4", NpgsqlDbType.Integer, tuner.Lnbs[3]);
|
|
cmd.Parameters.AddWithValue("@dish1", NpgsqlDbType.Integer, tuner.Dishes[0]);
|
|
cmd.Parameters.AddWithValue("@dish2", NpgsqlDbType.Integer, tuner.Dishes[1]);
|
|
cmd.Parameters.AddWithValue("@dish3", NpgsqlDbType.Integer, tuner.Dishes[2]);
|
|
cmd.Parameters.AddWithValue("@dish4", NpgsqlDbType.Integer, tuner.Dishes[3]);
|
|
cmd.ExecuteNonQuery();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
}
|
|
|
|
public void UiTunerGetConfiguration(TunerMetadata foundTuner)
|
|
{
|
|
using (NpgsqlConnection conn = new NpgsqlConnection(connectionStringBuilder.ToString()))
|
|
{
|
|
conn.Open();
|
|
NpgsqlCommand cmd = conn.CreateCommand();
|
|
cmd.CommandText =
|
|
"SELECT diseqc_type, sat1, sat2, sat3, sat4, lnb1, lnb2, lnb3, lnb4, dish1, dish2, dish3, dish4 FROM skyscraper5_tuners WHERE mac = @mac AND satkeyversion = @satkeyversion";
|
|
cmd.Parameters.AddWithValue("@mac", NpgsqlDbType.Varchar, foundTuner.MacAddress.ToString());
|
|
cmd.Parameters.AddWithValue("@satkeyversion", NpgsqlDbType.Integer, uiVersion);
|
|
NpgsqlDataReader reader = cmd.ExecuteReader();
|
|
if (reader.Read())
|
|
{
|
|
foundTuner.DiseqcType = reader.GetInt32(0);
|
|
foundTuner.Satellites[0] = reader.GetInt32(1);
|
|
foundTuner.Satellites[1] = reader.GetInt32(2);
|
|
foundTuner.Satellites[2] = reader.GetInt32(3);
|
|
foundTuner.Satellites[3] = reader.GetInt32(4);
|
|
foundTuner.Lnbs[0] = reader.GetInt32(5);
|
|
foundTuner.Lnbs[1] = reader.GetInt32(6);
|
|
foundTuner.Lnbs[2] = reader.GetInt32(7);
|
|
foundTuner.Lnbs[3] = reader.GetInt32(8);
|
|
foundTuner.Dishes[0] = reader.GetInt32(9);
|
|
foundTuner.Dishes[1] = reader.GetInt32(10);
|
|
foundTuner.Dishes[2] = reader.GetInt32(11);
|
|
foundTuner.Dishes[3] = reader.GetInt32(12);
|
|
}
|
|
|
|
reader.Close();
|
|
cmd.Dispose();
|
|
conn.Close();
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|