diff --git a/RSND/Core/Database.cs b/RSND/Core/Database.cs index e384a7c..773768a 100644 --- a/RSND/Core/Database.cs +++ b/RSND/Core/Database.cs @@ -23,6 +23,8 @@ public class Database Console.WriteLine($"[{Name}] The file exists."); var json = File.ReadAllText($"{Name}.json"); var db = JsonConvert.DeserializeObject>(json); + + // if this is null, then something is wrong with the file if (db != null) _tables = db; } @@ -61,7 +63,7 @@ public class Database public string GetValue(GetQuery? query) { Console.WriteLine(_tables.Count.ToString().Pastel("#ff0000")); - var table = query?.Table; + var table = query?.TableName; var where = query?.Where; var split = where?.Split("|"); @@ -72,11 +74,30 @@ public class Database if (query?.Select != "*") return ""; var tableToReturn = _tables.Find(x => x.Name == table); - var rows = tableToReturn?.Rows?.Where(x => x.Columns?.FirstOrDefault(y => y.Name == colName)?.Value == value).ToArray(); + var rows = tableToReturn?.Rows?.Where(x => x.Columns?.FirstOrDefault(y => y.Name == colName)?.Value == value) + .ToArray(); return JsonConvert.SerializeObject(rows); } + public void SetValue(SetQuery? query) + { + var table = query?.TableName; + var key = query?.Key; + var value = query?.Value; + var newValue = query?.NewValue; + + Console.WriteLine(table); + var tableToReturn = _tables.Find(x => x.Name == table); + Console.WriteLine(tableToReturn == null ? "shits null" : "shits not null"); + Console.WriteLine(key); + var row = tableToReturn?.Rows?.FirstOrDefault(x => x.Columns?.FirstOrDefault(y => y.Name == key)?.Value == value); + var column = row?.Columns?.FirstOrDefault(x => x.Name == key); + column.Value = newValue; + + Console.WriteLine(column.Value); + } + public static void Loop() { while (true) diff --git a/RSND/Core/DbClient.cs b/RSND/Core/DbClient.cs index 0e214d2..88de225 100644 --- a/RSND/Core/DbClient.cs +++ b/RSND/Core/DbClient.cs @@ -50,7 +50,12 @@ public class DbClient Console.WriteLine($"Sent: {queryResult}".Pastel("#71C562")); break; } - + case QueryType.SetValue: + { + SetQuery setQuery = JsonConvert.DeserializeObject(query); + RsndMain.Db.SetValue(setQuery); + break; + } case QueryType.CreateTable: { CreateTableQuery createTableQuery = JsonConvert.DeserializeObject(query); diff --git a/RSND/Core/Querying/Queries/CreateTableQuery.cs b/RSND/Core/Querying/Queries/CreateTableQuery.cs index 214317c..b80da7a 100644 --- a/RSND/Core/Querying/Queries/CreateTableQuery.cs +++ b/RSND/Core/Querying/Queries/CreateTableQuery.cs @@ -2,7 +2,7 @@ namespace RSND.Core.Querying.Queries; -public class CreateTableQuery : IQuery +public class CreateTableQuery : Query { public CreateTableQuery(string tableName, Row[] rows) { diff --git a/RSND/Core/Querying/Queries/GetQuery.cs b/RSND/Core/Querying/Queries/GetQuery.cs index 30bd6bf..d00042e 100644 --- a/RSND/Core/Querying/Queries/GetQuery.cs +++ b/RSND/Core/Querying/Queries/GetQuery.cs @@ -1,15 +1,15 @@ namespace RSND.Core.Querying.Queries; -public class GetQuery : IQuery +public class GetQuery : Query { - public GetQuery(string table, string select, string where) + public GetQuery(string tableName, string select, string where) { - Table = table; + TableName = tableName; Select = select; Where = where; } - public string Table { get; set; } + public string TableName { get; set; } public string Select { get; set; } public string Where { get; set; } } \ No newline at end of file diff --git a/RSND/Core/Querying/Queries/SetQuery.cs b/RSND/Core/Querying/Queries/SetQuery.cs new file mode 100644 index 0000000..dad3b92 --- /dev/null +++ b/RSND/Core/Querying/Queries/SetQuery.cs @@ -0,0 +1,9 @@ +namespace RSND.Core.Querying.Queries; + +public class SetQuery : Query +{ + public string TableName { get; set; } + public string Key { get; set; } + public string Value { get; set; } + public string NewValue { get; set; } +} \ No newline at end of file diff --git a/RSND/Core/Querying/IQuery.cs b/RSND/Core/Querying/Query.cs similarity index 54% rename from RSND/Core/Querying/IQuery.cs rename to RSND/Core/Querying/Query.cs index f80650f..cc866e3 100644 --- a/RSND/Core/Querying/IQuery.cs +++ b/RSND/Core/Querying/Query.cs @@ -1,6 +1,5 @@ namespace RSND.Core.Querying; -public interface IQuery +public abstract class Query { - } \ No newline at end of file diff --git a/RSND/Core/Querying/QueryHelper.cs b/RSND/Core/Querying/QueryHelper.cs index d7f22d3..cb33f6b 100644 --- a/RSND/Core/Querying/QueryHelper.cs +++ b/RSND/Core/Querying/QueryHelper.cs @@ -13,6 +13,7 @@ public static class QueryHelper return query.Type switch { "GetValue" => QueryType.GetValue, + "SetValue" => QueryType.SetValue, "CreateTable" => QueryType.CreateTable, _ => null }; diff --git a/RSND/Core/Querying/QueryType.cs b/RSND/Core/Querying/QueryType.cs index e2d333a..b354a44 100644 --- a/RSND/Core/Querying/QueryType.cs +++ b/RSND/Core/Querying/QueryType.cs @@ -3,5 +3,6 @@ public enum QueryType { GetValue, + SetValue, CreateTable } \ No newline at end of file