Browse Source

Add ability to create tables

master
j4ck 2 years ago
parent
commit
1700f01e40
  1. 19
      RSND/Core/Database.cs
  2. 11
      RSND/Core/DbClient.cs
  3. 15
      RSND/Core/Querying/Queries/CreateTableQuery.cs
  4. 3
      RSND/Core/Querying/Queries/GetQuery.cs
  5. 1
      RSND/Core/Querying/QueryHelper.cs
  6. 1
      RSND/RSND.csproj

19
RSND/Core/Database.cs

@ -1,4 +1,5 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using Pastel;
using RSND.Core.DbInternals; using RSND.Core.DbInternals;
using RSND.Core.Querying.Queries; using RSND.Core.Querying.Queries;
@ -8,9 +9,16 @@ public class Database
{ {
List<Table> tables = new(); List<Table> tables = new();
public void CreateTable(Table table)
public void CreateTable(Table query)
{ {
tables.Add(table);
var matches = tables.FirstOrDefault(x => x.Name == query.Name);
if (matches != null)
{
tables.Remove(matches);
}
tables.Add(query);
} }
private static string GetRowsJson(Row[]? rows) private static string GetRowsJson(Row[]? rows)
@ -20,7 +28,7 @@ public class Database
public string GetValue(GetQuery? query) public string GetValue(GetQuery? query)
{ {
Console.WriteLine(tables.Count);
Console.WriteLine(tables.Count.ToString().Pastel("#ff0000"));
var table = query?.Table; var table = query?.Table;
var where = query?.Where; var where = query?.Where;
@ -33,15 +41,16 @@ public class Database
var tableToReturn = tables.Find(x => x.Name == table); var tableToReturn = tables.Find(x => x.Name == table);
var rows = tableToReturn?.Rows?.Where(x => x.Columns.FirstOrDefault(y => y.Data.Key == colName)?.Data.Value == param).ToArray();
var rows = tableToReturn?.Rows?.Where(x => x.Columns?.FirstOrDefault(y => y.Data.Key == colName)?.Data.Value == param).ToArray();
return GetRowsJson(rows); return GetRowsJson(rows);
} }
public static void Loop() public static void Loop()
{ {
while (true) while (true)
{ {
} }
} }
} }

11
RSND/Core/DbClient.cs

@ -1,5 +1,6 @@
using Fleck; using Fleck;
using Newtonsoft.Json; using Newtonsoft.Json;
using Pastel;
using RSND.Core.DbInternals; using RSND.Core.DbInternals;
using RSND.Core.Querying; using RSND.Core.Querying;
using RSND.Core.Querying.Queries; using RSND.Core.Querying.Queries;
@ -71,16 +72,18 @@ public class DbClient
GetQuery getQuery = JsonConvert.DeserializeObject<GetQuery>(query); GetQuery getQuery = JsonConvert.DeserializeObject<GetQuery>(query);
var queryResult = RsndMain.Db.GetValue(getQuery); var queryResult = RsndMain.Db.GetValue(getQuery);
_socket.Send(queryResult); _socket.Send(queryResult);
Console.WriteLine($"Yooo: {queryResult}");
Console.WriteLine($"Sent: {queryResult}".Pastel("#71C562"));
break; break;
} }
case QueryType.CreateTable: case QueryType.CreateTable:
{ {
/*RsndMain.Db.CreateTable(new Table
CreateTableQuery createTableQuery = JsonConvert.DeserializeObject<CreateTableQuery>(query);
RsndMain.Db.CreateTable(new Table
{ {
Name = query.Table
});*/
Name = createTableQuery?.TableName,
Rows = createTableQuery?.Rows
});
break; break;
} }

15
RSND/Core/Querying/Queries/CreateTableQuery.cs

@ -0,0 +1,15 @@
using RSND.Core.DbInternals;
namespace RSND.Core.Querying.Queries;
public class CreateTableQuery : IQuery
{
public CreateTableQuery(string tableName, Row[] rows)
{
TableName = tableName;
Rows = rows;
}
public string TableName { get; set; }
public Row[] Rows;
}

3
RSND/Core/Querying/Queries/GetQuery.cs

@ -1,5 +1,8 @@
namespace RSND.Core.Querying.Queries; namespace RSND.Core.Querying.Queries;
/// <summary>
/// The query that gets a value from the database.
/// </summary>
public class GetQuery : IQuery public class GetQuery : IQuery
{ {
public GetQuery(string table, string select, string where) public GetQuery(string table, string select, string where)

1
RSND/Core/Querying/QueryHelper.cs

@ -13,6 +13,7 @@ public static class QueryHelper
return query.Type switch return query.Type switch
{ {
"GetValue" => QueryType.GetValue, "GetValue" => QueryType.GetValue,
"CreateTable" => QueryType.CreateTable,
_ => null _ => null
}; };
} }

1
RSND/RSND.csproj

@ -10,6 +10,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Fleck" Version="1.2.0" /> <PackageReference Include="Fleck" Version="1.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2-beta1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.2-beta1" />
<PackageReference Include="Pastel" Version="3.0.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>
Loading…
Cancel
Save