// <auto-generated />
using System;
using System.Collections.Generic;
using DysonNetwork.Drive;
using DysonNetwork.Shared.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using NodaTime;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;

#nullable disable

namespace DysonNetwork.Drive.Migrations
{
    [DbContext(typeof(AppDatabase))]
    [Migration("20260113152536_RemovePoolFromCloudFile")]
    partial class RemovePoolFromCloudFile
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "10.0.1")
                .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("DysonNetwork.Drive.Billing.QuotaRecord", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid")
                        .HasColumnName("id");

                    b.Property<Guid>("AccountId")
                        .HasColumnType("uuid")
                        .HasColumnName("account_id");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

                    b.Property<string>("Description")
                        .IsRequired()
                        .HasColumnType("text")
                        .HasColumnName("description");

                    b.Property<Instant?>("ExpiredAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("expired_at");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("text")
                        .HasColumnName("name");

                    b.Property<long>("Quota")
                        .HasColumnType("bigint")
                        .HasColumnName("quota");

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

                    b.HasKey("Id")
                        .HasName("pk_quota_records");

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

            modelBuilder.Entity("DysonNetwork.Drive.Storage.Model.PersistentTask", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid")
                        .HasColumnName("id");

                    b.Property<Guid>("AccountId")
                        .HasColumnType("uuid")
                        .HasColumnName("account_id");

                    b.Property<Instant?>("CompletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("completed_at");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

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

                    b.Property<string>("ErrorMessage")
                        .HasMaxLength(1024)
                        .HasColumnType("character varying(1024)")
                        .HasColumnName("error_message");

                    b.Property<long?>("EstimatedDurationSeconds")
                        .HasColumnType("bigint")
                        .HasColumnName("estimated_duration_seconds");

                    b.Property<Instant?>("ExpiredAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("expired_at");

                    b.Property<Instant>("LastActivity")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("last_activity");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)")
                        .HasColumnName("name");

                    b.Property<Dictionary<string, object>>("Parameters")
                        .IsRequired()
                        .HasColumnType("jsonb")
                        .HasColumnName("parameters");

                    b.Property<int>("Priority")
                        .HasColumnType("integer")
                        .HasColumnName("priority");

                    b.Property<double>("Progress")
                        .HasColumnType("double precision")
                        .HasColumnName("progress");

                    b.Property<Dictionary<string, object>>("Results")
                        .IsRequired()
                        .HasColumnType("jsonb")
                        .HasColumnName("results");

                    b.Property<Instant?>("StartedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("started_at");

                    b.Property<int>("Status")
                        .HasColumnType("integer")
                        .HasColumnName("status");

                    b.Property<string>("TaskId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)")
                        .HasColumnName("task_id");

                    b.Property<int>("Type")
                        .HasColumnType("integer")
                        .HasColumnName("type");

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

                    b.HasKey("Id")
                        .HasName("pk_tasks");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.FilePool", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid")
                        .HasColumnName("id");

                    b.Property<Guid?>("AccountId")
                        .HasColumnType("uuid")
                        .HasColumnName("account_id");

                    b.Property<BillingConfig>("BillingConfig")
                        .IsRequired()
                        .HasColumnType("jsonb")
                        .HasColumnName("billing_config");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

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

                    b.Property<bool>("IsHidden")
                        .HasColumnType("boolean")
                        .HasColumnName("is_hidden");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(1024)
                        .HasColumnType("character varying(1024)")
                        .HasColumnName("name");

                    b.Property<PolicyConfig>("PolicyConfig")
                        .IsRequired()
                        .HasColumnType("jsonb")
                        .HasColumnName("policy_config");

                    b.Property<RemoteStorageConfig>("StorageConfig")
                        .IsRequired()
                        .HasColumnType("jsonb")
                        .HasColumnName("storage_config");

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

                    b.HasKey("Id")
                        .HasName("pk_pools");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnCloudFile", b =>
                {
                    b.Property<string>("Id")
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)")
                        .HasColumnName("id");

                    b.Property<Guid>("AccountId")
                        .HasColumnType("uuid")
                        .HasColumnName("account_id");

                    b.Property<Guid?>("BundleId")
                        .HasColumnType("uuid")
                        .HasColumnName("bundle_id");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

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

                    b.Property<Instant?>("ExpiredAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("expired_at");

                    b.Property<bool>("IsMarkedRecycle")
                        .HasColumnType("boolean")
                        .HasColumnName("is_marked_recycle");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(1024)
                        .HasColumnType("character varying(1024)")
                        .HasColumnName("name");

                    b.Property<string>("ObjectId")
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)")
                        .HasColumnName("object_id");

                    b.PrimitiveCollection<string>("SensitiveMarks")
                        .HasColumnType("jsonb")
                        .HasColumnName("sensitive_marks");

                    b.Property<string>("StorageId")
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)")
                        .HasColumnName("storage_id");

                    b.Property<string>("StorageUrl")
                        .HasMaxLength(4096)
                        .HasColumnType("character varying(4096)")
                        .HasColumnName("storage_url");

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

                    b.Property<Instant?>("UploadedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("uploaded_at");

                    b.Property<Dictionary<string, object>>("UserMeta")
                        .HasColumnType("jsonb")
                        .HasColumnName("user_meta");

                    b.HasKey("Id")
                        .HasName("pk_files");

                    b.HasIndex("BundleId")
                        .HasDatabaseName("ix_files_bundle_id");

                    b.HasIndex("ObjectId")
                        .HasDatabaseName("ix_files_object_id");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnCloudFileIndex", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid")
                        .HasColumnName("id");

                    b.Property<Guid>("AccountId")
                        .HasColumnType("uuid")
                        .HasColumnName("account_id");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

                    b.Property<string>("FileId")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)")
                        .HasColumnName("file_id");

                    b.Property<string>("Path")
                        .IsRequired()
                        .HasMaxLength(8192)
                        .HasColumnType("character varying(8192)")
                        .HasColumnName("path");

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

                    b.HasKey("Id")
                        .HasName("pk_file_indexes");

                    b.HasIndex("FileId")
                        .HasDatabaseName("ix_file_indexes_file_id");

                    b.HasIndex("Path", "AccountId")
                        .HasDatabaseName("ix_file_indexes_path_account_id");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnFileBundle", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid")
                        .HasColumnName("id");

                    b.Property<Guid>("AccountId")
                        .HasColumnType("uuid")
                        .HasColumnName("account_id");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

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

                    b.Property<Instant?>("ExpiredAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("expired_at");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(1024)
                        .HasColumnType("character varying(1024)")
                        .HasColumnName("name");

                    b.Property<string>("Passcode")
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)")
                        .HasColumnName("passcode");

                    b.Property<string>("Slug")
                        .IsRequired()
                        .HasMaxLength(1024)
                        .HasColumnType("character varying(1024)")
                        .HasColumnName("slug");

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

                    b.HasKey("Id")
                        .HasName("pk_bundles");

                    b.HasIndex("Slug")
                        .IsUnique()
                        .HasDatabaseName("ix_bundles_slug");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnFileObject", b =>
                {
                    b.Property<string>("Id")
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)")
                        .HasColumnName("id");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

                    b.Property<bool>("HasCompression")
                        .HasColumnType("boolean")
                        .HasColumnName("has_compression");

                    b.Property<bool>("HasThumbnail")
                        .HasColumnType("boolean")
                        .HasColumnName("has_thumbnail");

                    b.Property<string>("Hash")
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)")
                        .HasColumnName("hash");

                    b.Property<Dictionary<string, object>>("Meta")
                        .HasColumnType("jsonb")
                        .HasColumnName("meta");

                    b.Property<string>("MimeType")
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)")
                        .HasColumnName("mime_type");

                    b.Property<long>("Size")
                        .HasColumnType("bigint")
                        .HasColumnName("size");

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

                    b.HasKey("Id")
                        .HasName("pk_file_objects");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnFilePermission", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid")
                        .HasColumnName("id");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

                    b.Property<string>("FileId")
                        .IsRequired()
                        .HasColumnType("text")
                        .HasColumnName("file_id");

                    b.Property<int>("Permission")
                        .HasColumnType("integer")
                        .HasColumnName("permission");

                    b.Property<string>("SubjectId")
                        .IsRequired()
                        .HasColumnType("text")
                        .HasColumnName("subject_id");

                    b.Property<int>("SubjectType")
                        .HasColumnType("integer")
                        .HasColumnName("subject_type");

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

                    b.HasKey("Id")
                        .HasName("pk_file_permissions");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnFileReplica", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid")
                        .HasColumnName("id");

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

                    b.Property<Instant?>("DeletedAt")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("deleted_at");

                    b.Property<bool>("IsPrimary")
                        .HasColumnType("boolean")
                        .HasColumnName("is_primary");

                    b.Property<string>("ObjectId")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)")
                        .HasColumnName("object_id");

                    b.Property<Guid?>("PoolId")
                        .HasColumnType("uuid")
                        .HasColumnName("pool_id");

                    b.Property<int>("Status")
                        .HasColumnType("integer")
                        .HasColumnName("status");

                    b.Property<string>("StorageId")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("character varying(128)")
                        .HasColumnName("storage_id");

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

                    b.HasKey("Id")
                        .HasName("pk_file_replicas");

                    b.HasIndex("ObjectId")
                        .HasDatabaseName("ix_file_replicas_object_id");

                    b.HasIndex("PoolId")
                        .HasDatabaseName("ix_file_replicas_pool_id");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnCloudFile", b =>
                {
                    b.HasOne("DysonNetwork.Shared.Models.SnFileBundle", "Bundle")
                        .WithMany("Files")
                        .HasForeignKey("BundleId")
                        .HasConstraintName("fk_files_bundles_bundle_id");

                    b.HasOne("DysonNetwork.Shared.Models.SnFileObject", "Object")
                        .WithMany()
                        .HasForeignKey("ObjectId")
                        .HasConstraintName("fk_files_file_objects_object_id");

                    b.Navigation("Bundle");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnCloudFileIndex", b =>
                {
                    b.HasOne("DysonNetwork.Shared.Models.SnCloudFile", "File")
                        .WithMany("FileIndexes")
                        .HasForeignKey("FileId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired()
                        .HasConstraintName("fk_file_indexes_files_file_id");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnFileReplica", b =>
                {
                    b.HasOne("DysonNetwork.Shared.Models.SnFileObject", "Object")
                        .WithMany("FileReplicas")
                        .HasForeignKey("ObjectId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired()
                        .HasConstraintName("fk_file_replicas_file_objects_object_id");

                    b.HasOne("DysonNetwork.Shared.Models.FilePool", "Pool")
                        .WithMany()
                        .HasForeignKey("PoolId")
                        .HasConstraintName("fk_file_replicas_pools_pool_id");

                    b.Navigation("Object");

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

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnCloudFile", b =>
                {
                    b.Navigation("FileIndexes");
                });

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnFileBundle", b =>
                {
                    b.Navigation("Files");
                });

            modelBuilder.Entity("DysonNetwork.Shared.Models.SnFileObject", b =>
                {
                    b.Navigation("FileReplicas");
                });
#pragma warning restore 612, 618
        }
    }
}
