// <auto-generated />
using System;
using DeepDrftData.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;

#nullable disable

namespace DeepDrftData.Migrations
{
    [DbContext(typeof(DeepDrftContext))]
    [Migration("20260619155610_AddPlayShareTelemetry")]
    partial class AddPlayShareTelemetry
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "10.0.7")
                .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("DeepDrftModels.Entities.MixMetadata", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("created_at");

                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("boolean")
                        .HasDefaultValue(false)
                        .HasColumnName("is_deleted");

                    b.Property<long>("ReleaseId")
                        .HasColumnType("bigint")
                        .HasColumnName("release_id");

                    b.Property<DateTime>("UpdatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("updated_at");

                    b.Property<string>("WaveformEntryKey")
                        .IsRequired()
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("waveform_entry_key");

                    b.HasKey("Id");

                    b.HasIndex("IsDeleted")
                        .HasDatabaseName("IX_mix_metadata_is_deleted");

                    b.HasIndex("ReleaseId")
                        .IsUnique()
                        .HasDatabaseName("IX_mix_metadata_release_id");

                    b.ToTable("mix_metadata", (string)null);
                });

            modelBuilder.Entity("DeepDrftModels.Entities.PlayCounter", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<long>("CompleteCount")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasDefaultValue(0L)
                        .HasColumnName("complete_count");

                    b.Property<long>("PartialCount")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasDefaultValue(0L)
                        .HasColumnName("partial_count");

                    b.Property<long>("SampledCount")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasDefaultValue(0L)
                        .HasColumnName("sampled_count");

                    b.Property<long>("TrackId")
                        .HasColumnType("bigint")
                        .HasColumnName("track_id");

                    b.HasKey("Id");

                    b.HasIndex("TrackId")
                        .IsUnique()
                        .HasDatabaseName("IX_play_counter_track_id");

                    b.ToTable("play_counter", (string)null);
                });

            modelBuilder.Entity("DeepDrftModels.Entities.PlayEvent", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<string>("AnonId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)")
                        .HasColumnName("anon_id");

                    b.Property<string>("Bucket")
                        .IsRequired()
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasColumnName("bucket");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("created_at");

                    b.Property<long?>("ReleaseId")
                        .HasColumnType("bigint")
                        .HasColumnName("release_id");

                    b.Property<string>("TrackEntryKey")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("track_entry_key");

                    b.HasKey("Id");

                    b.HasIndex("AnonId")
                        .HasDatabaseName("IX_play_event_anon_id");

                    b.HasIndex("ReleaseId")
                        .HasDatabaseName("IX_play_event_release_id");

                    b.HasIndex("TrackEntryKey")
                        .HasDatabaseName("IX_play_event_track_entry_key");

                    b.ToTable("play_event", (string)null);
                });

            modelBuilder.Entity("DeepDrftModels.Entities.ReleaseEntity", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<string>("Artist")
                        .IsRequired()
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("artist");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("created_at");

                    b.Property<long?>("CreatedByUserId")
                        .HasColumnType("bigint")
                        .HasColumnName("created_by_user_id");

                    b.Property<string>("Description")
                        .HasMaxLength(4000)
                        .HasColumnType("character varying(4000)")
                        .HasColumnName("description");

                    b.Property<string>("EntryKey")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("entry_key");

                    b.Property<string>("Genre")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("genre");

                    b.Property<string>("ImagePath")
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("image_path");

                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("boolean")
                        .HasDefaultValue(false)
                        .HasColumnName("is_deleted");

                    b.Property<string>("Medium")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasDefaultValue("Cut")
                        .HasColumnName("medium");

                    b.Property<DateOnly?>("ReleaseDate")
                        .HasColumnType("date")
                        .HasColumnName("release_date");

                    b.Property<string>("ReleaseType")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasDefaultValue("Single")
                        .HasColumnName("release_type");

                    b.Property<string>("Title")
                        .IsRequired()
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("title");

                    b.Property<DateTime>("UpdatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("updated_at");

                    b.HasKey("Id");

                    b.HasIndex("EntryKey")
                        .IsUnique()
                        .HasDatabaseName("IX_release_entry_key");

                    b.HasIndex("IsDeleted")
                        .HasDatabaseName("IX_release_is_deleted");

                    b.HasIndex("Title", "Artist")
                        .IsUnique()
                        .HasDatabaseName("IX_release_title_artist")
                        .HasFilter("\"is_deleted\" = false");

                    b.ToTable("release", (string)null);
                });

            modelBuilder.Entity("DeepDrftModels.Entities.SessionMetadata", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("created_at");

                    b.Property<string>("HeroImageEntryKey")
                        .IsRequired()
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("hero_image_entry_key");

                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("boolean")
                        .HasDefaultValue(false)
                        .HasColumnName("is_deleted");

                    b.Property<long>("ReleaseId")
                        .HasColumnType("bigint")
                        .HasColumnName("release_id");

                    b.Property<DateTime>("UpdatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("updated_at");

                    b.HasKey("Id");

                    b.HasIndex("IsDeleted")
                        .HasDatabaseName("IX_session_metadata_is_deleted");

                    b.HasIndex("ReleaseId")
                        .IsUnique()
                        .HasDatabaseName("IX_session_metadata_release_id");

                    b.ToTable("session_metadata", (string)null);
                });

            modelBuilder.Entity("DeepDrftModels.Entities.ShareEvent", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<string>("AnonId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)")
                        .HasColumnName("anon_id");

                    b.Property<string>("Channel")
                        .IsRequired()
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasColumnName("channel");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("created_at");

                    b.Property<string>("TargetKey")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("target_key");

                    b.Property<string>("TargetType")
                        .IsRequired()
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasColumnName("target_type");

                    b.HasKey("Id");

                    b.HasIndex("AnonId")
                        .HasDatabaseName("IX_share_event_anon_id");

                    b.HasIndex("TargetKey")
                        .HasDatabaseName("IX_share_event_target_key");

                    b.ToTable("share_event", (string)null);
                });

            modelBuilder.Entity("DeepDrftModels.Entities.TrackEntity", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("created_at");

                    b.Property<double?>("DurationSeconds")
                        .HasColumnType("double precision")
                        .HasColumnName("duration_seconds");

                    b.Property<string>("EntryKey")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("entry_key");

                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("boolean")
                        .HasDefaultValue(false)
                        .HasColumnName("is_deleted");

                    b.Property<string>("OriginalFileName")
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("original_file_name");

                    b.Property<long?>("ReleaseId")
                        .HasColumnType("bigint")
                        .HasColumnName("release_id");

                    b.Property<string>("TrackName")
                        .IsRequired()
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("track_name");

                    b.Property<int>("TrackNumber")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasDefaultValue(1)
                        .HasColumnName("track_number");

                    b.Property<DateTime>("UpdatedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("updated_at");

                    b.HasKey("Id");

                    b.HasIndex("IsDeleted")
                        .HasDatabaseName("IX_track_is_deleted");

                    b.HasIndex("ReleaseId");

                    b.ToTable("track", (string)null);
                });

            modelBuilder.Entity("DeepDrftModels.Entities.MixMetadata", b =>
                {
                    b.HasOne("DeepDrftModels.Entities.ReleaseEntity", "Release")
                        .WithOne("MixMetadata")
                        .HasForeignKey("DeepDrftModels.Entities.MixMetadata", "ReleaseId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Release");
                });

            modelBuilder.Entity("DeepDrftModels.Entities.SessionMetadata", b =>
                {
                    b.HasOne("DeepDrftModels.Entities.ReleaseEntity", "Release")
                        .WithOne("SessionMetadata")
                        .HasForeignKey("DeepDrftModels.Entities.SessionMetadata", "ReleaseId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Release");
                });

            modelBuilder.Entity("DeepDrftModels.Entities.TrackEntity", b =>
                {
                    b.HasOne("DeepDrftModels.Entities.ReleaseEntity", "Release")
                        .WithMany("Tracks")
                        .HasForeignKey("ReleaseId")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.Navigation("Release");
                });

            modelBuilder.Entity("DeepDrftModels.Entities.ReleaseEntity", b =>
                {
                    b.Navigation("MixMetadata");

                    b.Navigation("SessionMetadata");

                    b.Navigation("Tracks");
                });
#pragma warning restore 612, 618
        }
    }
}
