manager-service/ManagerService/Data/MyInfoMateDbContext.cs
Thomas Fransolet f4919801b7 Misc
2025-05-13 17:18:59 +02:00

73 lines
2.7 KiB
C#

using ManagerService.Data.SubSection;
using ManagerService.DTOs;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Text.Json;
namespace ManagerService.Data
{
public class MyInfoMateDbContext : DbContext
{
public MyInfoMateDbContext(DbContextOptions<MyInfoMateDbContext> options) : base(options) { }
public DbSet<Instance> Instances { get; set; }
public DbSet<Configuration> Configurations { get; set; }
public DbSet<Section> Sections { get; set; }
public DbSet<Device> Devices { get; set; }
public DbSet<Resource> Resources { get; set; }
public DbSet<User> Users { get; set; }
// MAP
public DbSet<GeoPoint> GeoPoints { get; set; }
// QUIZ
public DbSet<QuizQuestion> QuizQuestions { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Configuration>()
.Property(s => s.Title)
.HasColumnType("jsonb")
.HasConversion(
v => JsonSerializer.Serialize(v, options),
v => JsonSerializer.Deserialize<List<TranslationDTO>>(v, options));
modelBuilder.Entity<Section>()
.HasDiscriminator<string>("Discriminator")
.HasValue<Section>("Base")
.HasValue<SectionAgenda>("Agenda")
.HasValue<SectionArticle>("Article")
.HasValue<SectionMap>("Map")
.HasValue<SectionMenu>("Menu")
.HasValue<SectionPdf>("PDF")
.HasValue<SectionPuzzle>("Puzzle")
.HasValue<SectionQuiz>("Quiz")
.HasValue<SectionSlider>("Slider")
.HasValue<SectionVideo>("Video")
.HasValue<SectionWeather>("Weather")
.HasValue<SectionWeb>("Web");
modelBuilder.Entity<Section>()
.Property(s => s.Title)
.HasColumnType("jsonb")
.HasConversion(
v => JsonSerializer.Serialize(v, options),
v => JsonSerializer.Deserialize<List<TranslationDTO>>(v, options));
modelBuilder.Entity<Section>()
.Property(s => s.Description)
.HasColumnType("jsonb")
.HasConversion(
v => JsonSerializer.Serialize(v, options),
v => JsonSerializer.Deserialize<List<TranslationDTO>>(v, options));
}
}
}