using System.Globalization;
using Common.Helpers;
using Data.Models.Events;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Data;
///
/// Database context for events
///
public class DataContext : DbContext
{
public DbSet Events { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
var dbPath = Path.Combine(ConfigurationPathProvider.GetSettingsPath(), "cleanuparr.db");
optionsBuilder.UseSqlite($"Data Source={dbPath}");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity(entity =>
{
entity.Property(e => e.Timestamp)
.HasConversion(new UtcDateTimeConverter());
});
}
public class UtcDateTimeConverter : ValueConverter
{
public UtcDateTimeConverter() : base(
v => v,
v => DateTime.SpecifyKind(v, DateTimeKind.Utc)
) {}
}
public static string GetLikePattern(string input)
{
input = input.Replace("[", "[[]")
.Replace("%", "[%]")
.Replace("_", "[_]");
return $"%{input}%";
}
}