84
ПРИЛОЖЕНИЕ 10.
Листинг приложения сервер
public static class SQL {
private static MySqlConnection _mySqlConnection;
public static MySqlCommand MySqlCommand { get; private set; }
public static string Error { get; private set; }
public static bool Connect() {
_mySqlConnection?.Close();
var connectionString = $"server={SQLConfig.Server};" +
$"uid={SQLConfig.User};" +
$"pwd={SQLConfig.Password};" +
$"database={SQLConfig.Database}";
try {
_mySqlConnection = new MySqlConnection(connectionString);
_mySqlConnection.Open();
MySqlCommand = _mySqlConnection.CreateCommand();
}
catch (MySqlException ex) {
Error = ex.Message; return false;
}
return true;
}
public static void Disconnect() { _mySqlConnection?.Close(); }
}
class HistoryMessage {
public DateTime MsgDate { get; set; }
public int IdUser { get; set; }
public string Msg { get; set; }
public HistoryMessage() {}
public HistoryMessage(DateTime msgDate, int idUser, string msg) {
MsgDate = msgDate;
IdUser = idUser;
Msg = msg;
}
public static List<HistoryMessage> Get() {
var history = new List<HistoryMessage>();
SQL.MySqlCommand.CommandText = $"SELECT * FROM {HistoryTable.Name}";
using (var mySqlDataReader = SQL.MySqlCommand.ExecuteReader()) {
while (mySqlDataReader.Read()) {
var historyMsg = new HistoryMessage {
MsgDate = UnixTimeStamp.ToDateTime(mySqlDataReader.GetInt32(HistoryTable.MsgDate)),
IdUser = mySqlDataReader.GetInt32(HistoryTable.IdUser),
Msg = mySqlDataReader.GetString(HistoryTable.Msg),
};
history.Add(historyMsg);
}
mySqlDataReader.Close();
}
return history;
}
public static int Add(HistoryMessage historyMessage) {
SQL.MySqlCommand.CommandText =
$"INSERT INTO {HistoryTable.Name} " +
$"({HistoryTable.MsgDate}, {HistoryTable.IdUser}, {HistoryTable.Msg}) " +
$"VALUES ('{UnixTimeStamp.ToUnix(historyMessage.MsgDate)}', '{historyMessage.IdUser}', '{historyMessage.Msg}')";
SQL.MySqlCommand.ExecuteNonQuery();
return (int) SQL.MySqlCommand.LastInsertedId;
}
private static void DeleteOld() {
SQL.MySqlCommand.CommandText = $"DELETE FROM {HistoryTable.Name} " +
$"WHERE {HistoryTable.MsgDate} < '{UnixTimeStamp.ToUnix(DateTime.Now - TimeSpan.FromMinutes(15))}'";
SQL.MySqlCommand.ExecuteNonQuery();
}
}