You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.1 KiB
95 lines
2.1 KiB
using System.Net.Http.Json; |
|
using Model.Git; |
|
|
|
#if NO_SQL |
|
|
|
#else |
|
using Contexts; |
|
using Microsoft.EntityFrameworkCore; |
|
#endif |
|
|
|
namespace Services.Development; |
|
|
|
public class GitService : IGitService { |
|
private readonly HttpClient httpClient; |
|
|
|
private bool isLoaded; |
|
|
|
private event Action OnChange = default!; |
|
|
|
|
|
public GitService(HttpClient httpClient) { |
|
this.httpClient = httpClient; |
|
} |
|
|
|
#if NO_SQL |
|
public List<GitChangeModel> GitChangeModels { get; set; } = default!; |
|
public List<GitPatchModel> GitPatchModels { get; set; } = default!; |
|
#else |
|
public DbSet<ChangeModel> ChangeModels => Database.ChangeModels; |
|
public DbSet<PatchModel> PatchModels => Database.PatchModels; |
|
public DatabaseContext Database { get; set; } |
|
#endif |
|
|
|
|
|
|
|
public void Subscribe(Action action) { |
|
OnChange += action; |
|
} |
|
|
|
public void Unsubscribe(Action action) { |
|
OnChange -= action; |
|
} |
|
|
|
public bool IsLoaded() { |
|
return isLoaded; |
|
} |
|
|
|
|
|
#if NO_SQL |
|
|
|
public async Task Load() { |
|
|
|
if (isLoaded) { |
|
return; |
|
} |
|
|
|
GitChangeModels = (await httpClient.GetFromJsonAsync<GitChangeModel[]>("generated/GitChangeModels.json") ?? Array.Empty<GitChangeModel>()).ToList(); |
|
GitPatchModels = (await httpClient.GetFromJsonAsync<GitPatchModel[]>("generated/GitPatchModels.json") ?? Array.Empty<GitPatchModel>()).ToList(); |
|
|
|
|
|
isLoaded = true; |
|
|
|
NotifyDataChanged(); |
|
} |
|
|
|
#else |
|
|
|
public async Task Load(DatabaseContext database) { |
|
Database = database; |
|
|
|
if (isLoaded) { |
|
return; |
|
} |
|
|
|
Database.ChangeModels.AddRange(await httpClient.GetFromJsonAsync<ChangeModel[]>("generated/GitChangeModels.json")); |
|
Database.PatchModels.AddRange(await httpClient.GetFromJsonAsync<PatchModel[]>("generated/GitPatchModels.json")); |
|
Database.SaveChanges(); |
|
|
|
|
|
isLoaded = true; |
|
|
|
NotifyDataChanged(); |
|
} |
|
|
|
#endif |
|
|
|
|
|
public void Update() { |
|
NotifyDataChanged(); |
|
} |
|
|
|
private void NotifyDataChanged() { |
|
OnChange?.Invoke(); |
|
} |
|
} |