Skip to content

Commit 72757f3

Browse files
committed
feat(datatable): rework with add, remove and get functions
1 parent 65a0c38 commit 72757f3

2 files changed

Lines changed: 38 additions & 12 deletions

File tree

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
using System;
2+
using System.Collections.Generic;
23

34
namespace SharpEngine.Core.Data.DataTable;
45

56
/// <summary>
67
/// Table of Data
78
/// </summary>
8-
public interface IDataTable
9+
public interface IDataTable<T> where T : class
910
{
11+
/// <summary>
12+
/// Add Object
13+
/// </summary>
14+
/// <param name="obj">Object</param>
15+
public void Add(T obj);
16+
17+
/// <summary>
18+
/// Remove Object
19+
/// </summary>
20+
/// <param name="obj">Object</param>
21+
public void Remove(T obj);
22+
1023
/// <summary>
1124
/// Get Object
1225
/// </summary>
1326
/// <param name="predicate">Predicate</param>
14-
/// <returns>Object</returns>
15-
public dynamic? Get(Predicate<dynamic?> predicate);
27+
/// <returns>Objects</returns>
28+
public IEnumerable<T> Get(Func<T, bool> predicate);
1629
}

SharpEngine.Core/Data/DataTable/JsonDataTable.cs

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,30 @@ namespace SharpEngine.Core.Data.DataTable;
1010
/// Json Data Table
1111
/// </summary>
1212
/// <param name="jsonFile">Json File</param>
13-
public class JsonDataTable<T>(string jsonFile) : IDataTable
13+
public class JsonDataTable<T>(string jsonFile) : IDataTable<T> where T : class
1414
{
15-
private List<dynamic?> Objects { get; } =
16-
JsonSerializer
17-
.Deserialize<List<T>>(File.ReadAllText(jsonFile))
18-
?.Select(x => (dynamic?)x)
19-
.ToList() ?? [];
15+
private List<T> Objects { get; } = JsonSerializer.Deserialize<List<T>>(File.ReadAllText(jsonFile))?.ToList() ?? [];
2016

21-
/// <inheritdoc />
22-
public dynamic? Get(Predicate<dynamic?> predicate)
17+
/// <inheritdoc/>
18+
public void Add(T obj)
2319
{
24-
return Objects.Find(predicate);
20+
ArgumentNullException.ThrowIfNull(obj);
21+
Objects.Add(obj);
22+
File.WriteAllText(jsonFile, JsonSerializer.Serialize(Objects));
23+
}
24+
25+
/// <inheritdoc/>
26+
public IEnumerable<T> Get(Func<T, bool> predicate)
27+
{
28+
ArgumentNullException.ThrowIfNull(predicate);
29+
return Objects.Where(obj => predicate(obj));
30+
}
31+
32+
/// <inheritdoc/>
33+
public void Remove(T obj)
34+
{
35+
ArgumentNullException.ThrowIfNull(obj);
36+
Objects.Remove(obj);
37+
File.WriteAllText(jsonFile, JsonSerializer.Serialize(Objects));
2538
}
2639
}

0 commit comments

Comments
 (0)