Skip to content

Commit 2f23348

Browse files
committed
WIP: further modifed the DataAcess to be able to utilize different services if needed.
1 parent bc2babd commit 2f23348

File tree

4 files changed

+33
-25
lines changed

4 files changed

+33
-25
lines changed

src/HyperMC/HyperMcView.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public HyperMcView(IForgeClient forgeClient, IDataAccess dataAccess, IUserSettin
4646
private async void HyperMcView_Load(object sender, EventArgs e)
4747
{
4848
SetView(new ControlView(pnl_MainArea));
49-
var mods = await _dataAccess.LoadData<ModpackData[]>(_settings.ModPacksFile);
49+
var mods = await _dataAccess.LoadData<ModpackData[], int, ModpackData[]>(_settings.ModPacksFile);
5050
if (mods != null)
5151
{
5252
foreach (var mod in mods)
@@ -127,7 +127,7 @@ private async void ModpacksUpdated(object? sender, NotifyCollectionChangedEventA
127127
}
128128

129129
SortModpacks();
130-
await _dataAccess.SaveData(_modpacks.ToArray(), _settings.ModPacksFile);
130+
await _dataAccess.SaveData(_settings.ModPacksFile, _modpacks.ToArray());
131131
}
132132

133133
private ModpackBox CreateModpackBox(ModpackData data)

src/HyperMC/Services/FileDataAccess.cs

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,22 @@ namespace Hypermc.Services
1010
{
1111
public class FileDataAccess : IDataAccess
1212
{
13-
public async Task<T> LoadData<T>(string file)
13+
public async Task<O> LoadData<T, U, O>(string fileOrQuery, U parameters = default(U), string connectionStringName = null)
1414
{
15-
if (File.Exists(file))
15+
if (File.Exists(fileOrQuery))
1616
{
17-
using var stream = new FileStream(file, FileMode.Open, FileAccess.Read);
18-
var settings = await JsonSerializer.DeserializeAsync<T>(stream);
17+
using var stream = new FileStream(fileOrQuery, FileMode.Open, FileAccess.Read);
18+
var settings = await JsonSerializer.DeserializeAsync<O>(stream);
1919
return settings;
2020
}
2121

22-
return default(T);
22+
return default(O);
2323
}
2424

25-
public async Task SaveData<T>(T data, string file)
25+
public async Task SaveData<T>(string fileOrQuery, T parametersOrData, string connectionStringName = null)
2626
{
27-
string settingsToSave = JsonSerializer.Serialize(data);
28-
await File.WriteAllTextAsync(file, settingsToSave);
29-
}
30-
31-
public Task<List<T>> LoadData<T, U>(string query, U parameters, string connectionStringName)
32-
{
33-
return null;
34-
}
35-
public Task SaveData<T>(string query, T parameters, string connectionStringName)
36-
{
37-
return null;
27+
string settingsToSave = JsonSerializer.Serialize(parametersOrData);
28+
await File.WriteAllTextAsync(fileOrQuery, settingsToSave);
3829
}
3930
}
4031
}

src/HyperMC/Services/IDataAccess.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,26 @@ namespace Hypermc.Services
88
{
99
public interface IDataAccess
1010
{
11-
Task SaveData<T>(T data, string file);
12-
Task<T> LoadData<T>(string file);
13-
Task<List<T>> LoadData<T, U>(string query, U parameters, string connectionStringName);
14-
Task SaveData<T>(string query, T parameters, string connectionStringName);
11+
/// <summary>
12+
/// Loads data from a file or database
13+
/// </summary>
14+
/// <typeparam name="T">The input type for the data that you want to be loaded</typeparam>
15+
/// <typeparam name="U">The type of the data that is being passed in to be saved</typeparam>
16+
/// <typeparam name="O">The return type</typeparam>
17+
/// <param name="fileOrQuery">The file name or query string to run</param>
18+
/// <param name="parameters">The data to query the database on</param>
19+
/// <param name="connectionStringName">The connection string name for the database</param>
20+
/// <returns></returns>
21+
Task<O> LoadData<T, U, O>(string fileOrQuery, U parameters = default(U), string connectionStringName = null);
22+
23+
/// <summary>
24+
/// Saves data to a file or database
25+
/// </summary>
26+
/// <typeparam name="T">The data type that is being passed in</typeparam>
27+
/// <param name="fileOrQuery">The file name or query string to run</param>
28+
/// <param name="parametersOrData">The data to be saved to the file or database</param>
29+
/// <param name="connectionStringName">The connection string name for the database</param>
30+
/// <returns></returns>
31+
Task SaveData<T>(string fileOrQuery, T parametersOrData = default(T), string connectionStringName = null);
1532
}
1633
}

src/HyperMC/Settings/UserSettings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public async Task Initialize()
4646
Directory.CreateDirectory(ModPacksPath);
4747
}
4848

49-
var settings = await _dataAccess.LoadData<UserSettings>(_settingsFile);
49+
var settings = await _dataAccess.LoadData<UserSettings, int, UserSettings>(_settingsFile);
5050

5151
if (settings != null)
5252
{
@@ -60,7 +60,7 @@ public async Task UpdateSettings(string mcPath, string modPath)
6060
MinecraftPath = mcPath;
6161
ModPacksPath = modPath;
6262

63-
await _dataAccess.SaveData(this, _settingsFile);
63+
await _dataAccess.SaveData(_settingsFile, this);
6464
}
6565
}
6666
}

0 commit comments

Comments
 (0)