using Microsoft.EntityFrameworkCore;
using Persistence.Database.Entity;
using Persistence.Database.Model;

namespace Persistence.Database;

/// <summary>
/// EF контекст для любых БД поддерживаемых в EF
/// </summary>
public class PersistenceDbContext : DbContext
{
    public DbSet<DataSaub> DataSaub => Set<DataSaub>();

    public DbSet<Setpoint> Setpoint => Set<Setpoint>();

    public DbSet<TimestampedSet> TimestampedSets => Set<TimestampedSet>();

    public DbSet<ChangeLog> ChangeLog => Set<ChangeLog>();

    public DbSet<TechMessage> TechMessage => Set<TechMessage>();

    public DbSet<ParameterData> ParameterData => Set<ParameterData>();

	public DbSet<DataSourceSystem> DataSourceSystem => Set<DataSourceSystem>();

	public PersistenceDbContext(DbContextOptions options)
        : base(options)
    {

    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TimestampedSet>()
            .Property(e => e.Set)
            .HasJsonConversion();

        modelBuilder.Entity<ChangeLog>()
            .Property(e => e.Value)
            .HasJsonConversion();
    }
}