InkForge/app/InkForge.Desktop/Models/Workspace.cs

52 lines
1 KiB
C#
Raw Normal View History

using InkForge.Data;
using InkForge.Desktop.Data.Options;
using Microsoft.EntityFrameworkCore;
2024-02-16 02:23:58 +01:00
using Microsoft.Extensions.DependencyInjection;
namespace InkForge.Desktop.Models;
public sealed class Workspace : IDisposable
2024-02-16 02:23:58 +01:00
{
private readonly IDbContextFactory<NoteDbContext> _dbContextFactory;
private bool _disposedValue;
private IServiceScope? _scope;
public string Name { get; set; } = default!;
public LocalWorkspaceOptions Options { get; set; } = default!;
public IServiceProvider Services => _scope!.ServiceProvider;
public Workspace(IServiceScope scope)
{
_scope = scope;
_dbContextFactory = Services.GetRequiredService<IDbContextFactory<NoteDbContext>>();
}
2024-02-26 18:08:18 +01:00
// public Note AddNote(Note? parent)
// {
// }
public T CreateViewModel<T>()
{
return TypeFactory.Create<T>(Services);
}
public void Dispose()
{
Dispose(disposing: true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (!_disposedValue)
{
2024-02-26 18:08:18 +01:00
_scope!.Dispose();
_scope = null;
_disposedValue = true;
}
}
2024-02-16 02:23:58 +01:00
}