Files
laatzen/LaaProductionWeb/LaaProductionWeb.Blazor/Components/Logging/Sqlite/SqliteLoggingDbContext.cs
T
2025-03-17 16:03:24 +01:00

40 lines
1.3 KiB
C#

namespace LaaProductionWeb.Blazor.Components.Logging.Sqlite
{
using Microsoft.Extensions.Options;
using SQLite;
using System;
using System.Collections.Generic;
public class SqliteLoggingDbContext : IDisposable
{
private readonly IOptionsMonitor<SqliteLoggerOptions> options;
private SQLiteConnection sqliteConnection;
public SqliteLoggingDbContext(IOptionsMonitor<SqliteLoggerOptions> options)
{
this.options = options;
this.options.OnChange(this.OnSqliteLoggerOptionsChanged);
this.sqliteConnection = new SQLiteConnection($"{DateTime.Now:yyyyMMdd}{options.CurrentValue.DatabasePath}");
this.sqliteConnection.CreateTable<SqliteLog>();
}
public void Add(SqliteLog sqliteLog)
=> this.sqliteConnection.Insert(sqliteLog);
public void Dispose()
=> this.sqliteConnection?.Dispose();
public IEnumerable<SqliteLog> GetLogs()
=> this.sqliteConnection
.Table<SqliteLog>()
.OrderByDescending(x => x.LogId)
.Take(1000)
.ToList();
private void OnSqliteLoggerOptionsChanged(SqliteLoggerOptions options)
=> this.sqliteConnection = new SQLiteConnection(options.DatabasePath);
}
}