|
|
@ -7,18 +7,46 @@ namespace RSND.Core; |
|
|
|
|
|
|
|
public class Database |
|
|
|
{ |
|
|
|
List<Table> tables = new(); |
|
|
|
private string Name { get; set; } |
|
|
|
|
|
|
|
private List<Table> _tables = new(); |
|
|
|
|
|
|
|
public Database(string name) |
|
|
|
{ |
|
|
|
Name = name; |
|
|
|
} |
|
|
|
|
|
|
|
public void SetupFiles() |
|
|
|
{ |
|
|
|
if (File.Exists($"{Name}.json")) |
|
|
|
{ |
|
|
|
Console.WriteLine($"{Name} flag123"); |
|
|
|
var json = File.ReadAllText($"{Name}.json"); |
|
|
|
var db = JsonConvert.DeserializeObject<List<Table>>(json); |
|
|
|
if (db != null) |
|
|
|
_tables = db; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Console.WriteLine($"{Name} flag"); |
|
|
|
File.Create($"{Name}.json"); |
|
|
|
} |
|
|
|
} |
|
|
|
public void Save() |
|
|
|
{ |
|
|
|
var json = JsonConvert.SerializeObject(_tables); |
|
|
|
File.WriteAllText($"{Name}.json", json); |
|
|
|
} |
|
|
|
|
|
|
|
public void CreateTable(Table query) |
|
|
|
{ |
|
|
|
var matches = tables.FirstOrDefault(x => x.Name == query.Name); |
|
|
|
|
|
|
|
if (matches != null) |
|
|
|
if (_tables.Any(x => x.Name == query.Name)) |
|
|
|
{ |
|
|
|
tables.Remove(matches); |
|
|
|
_tables.RemoveAll(x => x.Name == query.Name); |
|
|
|
} |
|
|
|
|
|
|
|
tables.Add(query); |
|
|
|
_tables.Add(query); |
|
|
|
Save(); |
|
|
|
} |
|
|
|
|
|
|
|
private static string GetRowsJson(Row[]? rows) |
|
|
@ -28,20 +56,19 @@ public class Database |
|
|
|
|
|
|
|
public string GetValue(GetQuery? query) |
|
|
|
{ |
|
|
|
Console.WriteLine(tables.Count.ToString().Pastel("#ff0000")); |
|
|
|
Console.WriteLine(_tables.Count.ToString().Pastel("#ff0000")); |
|
|
|
var table = query?.Table; |
|
|
|
var where = query?.Where; |
|
|
|
|
|
|
|
var split = where?.Split("|"); |
|
|
|
var colName = split?[0]; |
|
|
|
var condition = split?[1]; |
|
|
|
var param = split?[2]; |
|
|
|
var value = split?[2]; |
|
|
|
|
|
|
|
if (query?.Select != "*") return ""; |
|
|
|
|
|
|
|
|
|
|
|
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 tableToReturn = _tables.Find(x => x.Name == table); |
|
|
|
var rows = tableToReturn?.Rows?.Where(x => x.Columns?.FirstOrDefault(y => y.Name == colName)?.Value == value).ToArray(); |
|
|
|
|
|
|
|
return GetRowsJson(rows); |
|
|
|
} |
|
|
|