📄 src/Infrastructure/Database/Slopper/SlopperDbContext.cs
using Microsoft.EntityFrameworkCore;
using Slopper.Domain;

namespace Slopper.Infrastructure.Database.Slopper;

internal sealed class SlopperDbContext(DbContextOptions options) : DbContext(options)
{
    public required DbSet<Clip> Clips { get; init; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        var clipBuilder = modelBuilder.Entity<Clip>();
        clipBuilder.HasKey(c => c.Id);
        clipBuilder.Property(c => c.MediaItemId);
        clipBuilder.Property(c => c.Path);
        clipBuilder.Property(c => c.CreatedAt);
        clipBuilder.Property(c => c.Caption);
        clipBuilder.Property(c => c.RemovedAt);
        clipBuilder.OwnsMany(c => c.Tags).HasKey("ClipId", "Value");
    }
}