40 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|