173 lines
6.2 KiB
C#
173 lines
6.2 KiB
C#
using Microsoft.Data.Sqlite;
|
|
using System.Globalization;
|
|
using TimeTable.model;
|
|
|
|
namespace TimeTable.controll {
|
|
internal static class SqliteTimeTableCommands {
|
|
|
|
public static string select = "select uid, start, end, text, time from timetable";
|
|
private static CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("de-de");
|
|
private static string insertPrefix = "insert into timetable (";
|
|
private static string insertIntermediate = ") values(";
|
|
private static string insertPostfix = ");";
|
|
|
|
private static string updatePrefix = "update timetable set ";
|
|
private static string updateIntermediate = " where uid = '";
|
|
private static string updatePostfix = "';";
|
|
|
|
public static UidCommand InsertCmd(DateTime start) {
|
|
string uid = Guid.NewGuid().ToString();
|
|
return BuildInsertCommand(uid, "uid, start", "'" + uid + "','" + start.ToString() + "'");
|
|
}
|
|
|
|
private static UidCommand BuildInsertCommand(string uid, string fields, string values) {
|
|
string command = insertPrefix + fields + insertIntermediate + values + insertPostfix;
|
|
UidCommand uidCommand = new UidCommand();
|
|
uidCommand.uid = uid;
|
|
uidCommand.command = command;
|
|
return uidCommand;
|
|
}
|
|
|
|
|
|
private static string BuildUpdateCmd(string uid, string fieldValues) {
|
|
return updatePrefix + fieldValues + updateIntermediate + uid + updatePostfix;
|
|
}
|
|
|
|
|
|
public static UidCommand InsertCmd(DateTime start, string text) {
|
|
string uid = Guid.NewGuid().ToString();
|
|
return BuildInsertCommand(uid, "uid, start", uid + "," + start.ToString());
|
|
}
|
|
|
|
|
|
public static string UpdateCmdCreator(string uid, string[] keys, string[] values) {
|
|
if (keys.Length != values.Length) {
|
|
throw new ArgumentException();
|
|
}
|
|
|
|
string fieldValues = "";
|
|
for (int i = 0; i < keys.Length; i++) {
|
|
fieldValues += "'" + keys[i] + "' = '" + values[i] + "',";
|
|
}
|
|
|
|
fieldValues = fieldValues.TrimEnd(',');
|
|
|
|
|
|
return BuildUpdateCmd(uid, fieldValues);
|
|
}
|
|
|
|
|
|
public static string UpdateCmd(string uid, DateTime start, DateTime end, string text) {
|
|
string[] keys = new string[4];
|
|
keys[0] = "uid";
|
|
keys[1] = "start";
|
|
keys[2] = "end";
|
|
keys[3] = "text";
|
|
string[] values = new string[4];
|
|
values[0] = uid;
|
|
values[1] = start.ToString();
|
|
values[2] = end.ToString();
|
|
values[3] = text;
|
|
return UpdateCmdCreator(uid, keys, values);
|
|
}
|
|
|
|
|
|
public static string UpdateStartCmd(string uid, DateTime start) {
|
|
string[] keys = new string[2];
|
|
keys[0] = "uid";
|
|
keys[1] = "start";
|
|
string[] values = new string[2];
|
|
values[0] = uid;
|
|
values[1] = start.ToString();
|
|
return UpdateCmdCreator(uid, keys, values);
|
|
}
|
|
public static string UpdateEndCmd(string uid, DateTime end) {
|
|
string[] keys = new string[2];
|
|
keys[0] = "uid";
|
|
keys[1] = "end";
|
|
string[] values = new string[2];
|
|
values[0] = uid;
|
|
values[1] = end.ToString();
|
|
return UpdateCmdCreator(uid, keys, values);
|
|
}
|
|
|
|
|
|
public static string UpdateTextCmd(string uid, string text) {
|
|
string[] keys = new string[2];
|
|
keys[0] = "uid";
|
|
keys[1] = "text";
|
|
string[] values = new string[2];
|
|
values[0] = uid;
|
|
values[1] = text;
|
|
return UpdateCmdCreator(uid, keys, values);
|
|
}
|
|
|
|
|
|
public static string UpdateStartTextCmd(string uid, DateTime start, string text) {
|
|
string[] keys = new string[3];
|
|
keys[0] = "uid";
|
|
keys[1] = "start";
|
|
keys[2] = "text";
|
|
string[] values = new string[3];
|
|
values[0] = uid;
|
|
values[1] = start.ToString();
|
|
values[2] = text;
|
|
return UpdateCmdCreator(uid, keys, values);
|
|
}
|
|
public static string UpdateEndTextCmd(string uid, DateTime end, string text) {
|
|
string[] keys = new string[3];
|
|
keys[0] = "uid";
|
|
keys[1] = "start";
|
|
keys[2] = "text";
|
|
string[] values = new string[3];
|
|
values[0] = uid;
|
|
values[1] = end.ToString();
|
|
values[2] = text;
|
|
return UpdateCmdCreator(uid, keys, values);
|
|
}
|
|
|
|
|
|
public static string UpdateTimeCmd(string uid, TimeSpan timespan) {
|
|
string[] keys = new string[2];
|
|
keys[0] = "uid";
|
|
keys[1] = "time";
|
|
string[] values = new string[2];
|
|
values[0] = uid;
|
|
values[1] = timespan.ToString();
|
|
return UpdateCmdCreator(uid, keys, values);
|
|
}
|
|
|
|
|
|
|
|
public static void CreateTableIfNotExists(string sqlConnection) {
|
|
SqliteConnection con = new SqliteConnection(sqlConnection);
|
|
con.Open();
|
|
SqliteCommand sqliteCmd = con.CreateCommand();
|
|
sqliteCmd.CommandText = @"SELECT name FROM sqlite_master WHERE type='table' AND name='timetable';";
|
|
|
|
var name = sqliteCmd.ExecuteScalar();
|
|
if (name != null && name.ToString() == "timetable") {
|
|
return;
|
|
}
|
|
string[] columns = new string[5] { "start", "end", "text", "time", "uid" };
|
|
var cols = string.Join(" VARCHAR,", columns);
|
|
cols = cols + " Varchar";
|
|
sqliteCmd.CommandText = "CREATE TABLE timetable (" + cols + ")";
|
|
con.Open();
|
|
sqliteCmd.ExecuteNonQuery();
|
|
con.Close();
|
|
}
|
|
|
|
public static void DeleteTableRow(string uid, string sqlConnection) {
|
|
SqliteConnection con = new SqliteConnection(sqlConnection);
|
|
con.Open();
|
|
SqliteCommand sqliteCmd = con.CreateCommand();
|
|
sqliteCmd.CommandText = @"Delete FROM timetable WHERE uid='" + uid + "';";
|
|
con.Open();
|
|
sqliteCmd.ExecuteNonQuery();
|
|
con.Close();
|
|
|
|
}
|
|
}
|
|
}
|