forked from gongxuegit/tiku-backend.net
feat: add content platform operations persistence
This commit is contained in:
@@ -2816,6 +2816,105 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
b.ToTable("tenant_usage_records", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.AiRecommendationReport", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id")
|
||||
.HasDefaultValueSql("gen_random_uuid()");
|
||||
|
||||
b.Property<JsonElement>("ContextPayload")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("context_payload")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<DateTimeOffset>("CreatedAt")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("created_at")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<string>("ErrorMessage")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("error_message");
|
||||
|
||||
b.Property<DateTimeOffset?>("GeneratedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("generated_at");
|
||||
|
||||
b.Property<JsonElement>("InputPayload")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("input_payload")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<string>("Model")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("character varying(100)")
|
||||
.HasColumnName("model");
|
||||
|
||||
b.Property<string>("PromptVersion")
|
||||
.IsRequired()
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("character varying(100)")
|
||||
.HasColumnName("prompt_version");
|
||||
|
||||
b.Property<string>("Provider")
|
||||
.IsRequired()
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("character varying(100)")
|
||||
.HasColumnName("provider");
|
||||
|
||||
b.Property<Guid?>("RegionId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("region_id");
|
||||
|
||||
b.Property<JsonElement>("ResultPayload")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("result_payload")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("status");
|
||||
|
||||
b.Property<Guid>("TenantId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("tenant_id");
|
||||
|
||||
b.Property<DateTimeOffset>("UpdatedAt")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("updated_at")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_ai_recommendation_reports");
|
||||
|
||||
b.HasAlternateKey("TenantId", "Id")
|
||||
.HasName("ak_ai_recommendation_reports_tenant_id_id");
|
||||
|
||||
b.HasIndex("UserId")
|
||||
.HasDatabaseName("ix_ai_recommendation_reports_user_id");
|
||||
|
||||
b.HasIndex("TenantId", "RegionId", "CreatedAt")
|
||||
.HasDatabaseName("ix_ai_recommendation_reports_tenant_id_region_id_created_at");
|
||||
|
||||
b.HasIndex("TenantId", "UserId", "CreatedAt")
|
||||
.HasDatabaseName("ix_ai_recommendation_reports_tenant_id_user_id_created_at");
|
||||
|
||||
b.ToTable("ai_recommendation_reports", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.AppAsset", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
@@ -3015,6 +3114,29 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
.HasColumnName("security_flags")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<string>("SecurityScanProvider")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("character varying(100)")
|
||||
.HasColumnName("security_scan_provider");
|
||||
|
||||
b.Property<string>("SecurityScanStatus")
|
||||
.IsRequired()
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasDefaultValue("not_required")
|
||||
.HasColumnName("security_scan_status");
|
||||
|
||||
b.Property<JsonElement>("SecurityScanSummary")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("security_scan_summary")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<DateTimeOffset?>("SecurityScannedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("security_scanned_at");
|
||||
|
||||
b.Property<int>("SortOrder")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("sort_order");
|
||||
@@ -3140,6 +3262,9 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
b.HasIndex("TenantId", "UploadStatus", "Status", "UpdatedAt")
|
||||
.HasDatabaseName("ix_content_assets_tenant_id_upload_status_status_updated_at");
|
||||
|
||||
b.HasIndex("TenantId", "SecurityScanStatus", "UploadStatus", "Status", "UpdatedAt")
|
||||
.HasDatabaseName("ix_content_assets_tenant_id_security_scan_status_upload_status~");
|
||||
|
||||
b.HasIndex("TenantId", "Status", "Visibility", "AssetType", "RegionId", "SubjectId", "CategoryId", "SortOrder")
|
||||
.HasDatabaseName("ix_content_assets_tenant_id_status_visibility_asset_type_regio~");
|
||||
|
||||
@@ -3155,6 +3280,193 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.ContentAssetAccessEvent", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id")
|
||||
.HasDefaultValueSql("gen_random_uuid()");
|
||||
|
||||
b.Property<string>("AccessType")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("access_type");
|
||||
|
||||
b.Property<string>("ActorRole")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("actor_role");
|
||||
|
||||
b.Property<Guid?>("AssetId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("asset_id");
|
||||
|
||||
b.Property<string>("AssetType")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("character varying(50)")
|
||||
.HasColumnName("asset_type");
|
||||
|
||||
b.Property<DateTimeOffset>("CreatedAt")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("created_at")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<string>("DenyCode")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("character varying(100)")
|
||||
.HasColumnName("deny_code");
|
||||
|
||||
b.Property<string>("Disposition")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("disposition");
|
||||
|
||||
b.Property<int?>("ExpiresInSeconds")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("expires_in_seconds");
|
||||
|
||||
b.Property<string>("IpAddress")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("character varying(100)")
|
||||
.HasColumnName("ip_address");
|
||||
|
||||
b.Property<JsonElement>("Metadata")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("metadata")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<string>("Result")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("result");
|
||||
|
||||
b.Property<string>("SignatureMode")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("character varying(100)")
|
||||
.HasColumnName("signature_mode");
|
||||
|
||||
b.Property<string>("StorageProvider")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("character varying(50)")
|
||||
.HasColumnName("storage_provider");
|
||||
|
||||
b.Property<Guid>("TenantId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("tenant_id");
|
||||
|
||||
b.Property<string>("UserAgent")
|
||||
.HasMaxLength(1024)
|
||||
.HasColumnType("character varying(1024)")
|
||||
.HasColumnName("user_agent");
|
||||
|
||||
b.Property<Guid?>("UserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.Property<string>("Visibility")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("character varying(50)")
|
||||
.HasColumnName("visibility");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_content_asset_access_events");
|
||||
|
||||
b.HasAlternateKey("TenantId", "Id")
|
||||
.HasName("ak_content_asset_access_events_tenant_id_id");
|
||||
|
||||
b.HasIndex("UserId")
|
||||
.HasDatabaseName("ix_content_asset_access_events_user_id");
|
||||
|
||||
b.HasIndex("TenantId", "AssetId", "CreatedAt")
|
||||
.HasDatabaseName("ix_content_asset_access_events_tenant_id_asset_id_created_at");
|
||||
|
||||
b.HasIndex("TenantId", "UserId", "CreatedAt")
|
||||
.HasDatabaseName("ix_content_asset_access_events_tenant_id_user_id_created_at")
|
||||
.HasFilter("user_id is not null");
|
||||
|
||||
b.HasIndex("TenantId", "AccessType", "Result", "CreatedAt")
|
||||
.HasDatabaseName("ix_content_asset_access_events_tenant_id_access_type_result_cr~");
|
||||
|
||||
b.ToTable("content_asset_access_events", null, t =>
|
||||
{
|
||||
t.HasCheckConstraint("ck_content_asset_access_events_expiry", "expires_in_seconds is null or expires_in_seconds > 0");
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.ContentAssetSecurityScanEvent", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id")
|
||||
.HasDefaultValueSql("gen_random_uuid()");
|
||||
|
||||
b.Property<Guid?>("AssetId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("asset_id");
|
||||
|
||||
b.Property<DateTimeOffset>("CreatedAt")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("created_at")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<JsonElement>("Details")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("details")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.PrimitiveCollection<string[]>("IssueCodes")
|
||||
.IsRequired()
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("text[]")
|
||||
.HasColumnName("issue_codes")
|
||||
.HasDefaultValueSql("'{}'::text[]");
|
||||
|
||||
b.Property<string>("Provider")
|
||||
.IsRequired()
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("character varying(100)")
|
||||
.HasColumnName("provider");
|
||||
|
||||
b.Property<string>("RiskLevel")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("risk_level");
|
||||
|
||||
b.Property<string>("ScanStatus")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("scan_status");
|
||||
|
||||
b.Property<Guid>("TenantId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("tenant_id");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_content_asset_security_scan_events");
|
||||
|
||||
b.HasAlternateKey("TenantId", "Id")
|
||||
.HasName("ak_content_asset_security_scan_events_tenant_id_id");
|
||||
|
||||
b.HasIndex("TenantId", "AssetId", "CreatedAt")
|
||||
.HasDatabaseName("ix_content_asset_security_scan_events_tenant_id_asset_id_creat~");
|
||||
|
||||
b.HasIndex("TenantId", "ScanStatus", "RiskLevel", "CreatedAt")
|
||||
.HasDatabaseName("ix_content_asset_security_scan_events_tenant_id_scan_status_ri~");
|
||||
|
||||
b.ToTable("content_asset_security_scan_events", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.ContentEntry", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
@@ -4332,6 +4644,117 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.QuestionBankGrant", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id")
|
||||
.HasDefaultValueSql("gen_random_uuid()");
|
||||
|
||||
b.PrimitiveCollection<string[]>("AllowedPlanCodes")
|
||||
.IsRequired()
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("text[]")
|
||||
.HasColumnName("allowed_plan_codes")
|
||||
.HasDefaultValueSql("'{}'::text[]");
|
||||
|
||||
b.PrimitiveCollection<Guid[]>("AllowedRegionIds")
|
||||
.IsRequired()
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid[]")
|
||||
.HasColumnName("allowed_region_ids")
|
||||
.HasDefaultValueSql("'{}'::uuid[]");
|
||||
|
||||
b.PrimitiveCollection<Guid[]>("AllowedSubjectIds")
|
||||
.IsRequired()
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid[]")
|
||||
.HasColumnName("allowed_subject_ids")
|
||||
.HasDefaultValueSql("'{}'::uuid[]");
|
||||
|
||||
b.PrimitiveCollection<Guid[]>("AllowedTenantIds")
|
||||
.IsRequired()
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid[]")
|
||||
.HasColumnName("allowed_tenant_ids")
|
||||
.HasDefaultValueSql("'{}'::uuid[]");
|
||||
|
||||
b.Property<DateTimeOffset>("CreatedAt")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("created_at")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<Guid?>("CreatedBy")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("created_by");
|
||||
|
||||
b.Property<DateTimeOffset?>("ExpiresAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("expires_at");
|
||||
|
||||
b.Property<string>("GrantScope")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("grant_scope");
|
||||
|
||||
b.Property<JsonElement>("Metadata")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("metadata")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<Guid>("SourceQuestionBankId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("source_question_bank_id");
|
||||
|
||||
b.Property<DateTimeOffset?>("StartsAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("starts_at");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("status");
|
||||
|
||||
b.Property<DateTimeOffset>("UpdatedAt")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("updated_at")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<Guid?>("UpdatedBy")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("updated_by");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_question_bank_grants");
|
||||
|
||||
b.HasIndex("AllowedPlanCodes")
|
||||
.HasDatabaseName("ix_question_bank_grants_allowed_plan_codes");
|
||||
|
||||
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("AllowedPlanCodes"), "gin");
|
||||
|
||||
b.HasIndex("AllowedTenantIds")
|
||||
.HasDatabaseName("ix_question_bank_grants_allowed_tenant_ids");
|
||||
|
||||
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("AllowedTenantIds"), "gin");
|
||||
|
||||
b.HasIndex("CreatedBy")
|
||||
.HasDatabaseName("ix_question_bank_grants_created_by");
|
||||
|
||||
b.HasIndex("UpdatedBy")
|
||||
.HasDatabaseName("ix_question_bank_grants_updated_by");
|
||||
|
||||
b.HasIndex("SourceQuestionBankId", "Status", "StartsAt", "ExpiresAt")
|
||||
.HasDatabaseName("ix_question_bank_grants_source_question_bank_id_status_starts_~");
|
||||
|
||||
b.ToTable("question_bank_grants", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.QuestionCollection", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
@@ -4770,6 +5193,136 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
b.ToTable("subject_shares", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.TenantQuestionBankAdoption", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id")
|
||||
.HasDefaultValueSql("gen_random_uuid()");
|
||||
|
||||
b.Property<string>("AdoptionMode")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("adoption_mode");
|
||||
|
||||
b.Property<int>("CopiedQuestionCount")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("copied_question_count");
|
||||
|
||||
b.Property<DateTimeOffset>("CreatedAt")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("created_at")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<Guid?>("CreatedBy")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("created_by");
|
||||
|
||||
b.Property<Guid?>("GrantId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("grant_id");
|
||||
|
||||
b.Property<DateTimeOffset?>("LastSyncedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("last_synced_at");
|
||||
|
||||
b.Property<JsonElement>("Metadata")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("metadata")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<Guid>("SourceQuestionBankId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("source_question_bank_id");
|
||||
|
||||
b.Property<JsonElement>("SourceSnapshot")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("source_snapshot")
|
||||
.HasDefaultValueSql("'{}'::jsonb");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("status");
|
||||
|
||||
b.Property<string>("SyncStatus")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("sync_status");
|
||||
|
||||
b.Property<Guid?>("TargetCollectionId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("target_collection_id");
|
||||
|
||||
b.Property<Guid?>("TargetEntryId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("target_entry_id");
|
||||
|
||||
b.Property<Guid?>("TargetQuestionBankId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("target_question_bank_id");
|
||||
|
||||
b.Property<Guid>("TenantId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("tenant_id");
|
||||
|
||||
b.Property<DateTimeOffset>("UpdatedAt")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("updated_at")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<Guid?>("UpdatedBy")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("updated_by");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_tenant_question_bank_adoptions");
|
||||
|
||||
b.HasAlternateKey("TenantId", "Id")
|
||||
.HasName("ak_tenant_question_bank_adoptions_tenant_id_id");
|
||||
|
||||
b.HasIndex("CreatedBy")
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_created_by");
|
||||
|
||||
b.HasIndex("GrantId")
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_grant_id");
|
||||
|
||||
b.HasIndex("SourceQuestionBankId")
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_source_question_bank_id");
|
||||
|
||||
b.HasIndex("UpdatedBy")
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_updated_by");
|
||||
|
||||
b.HasIndex("TenantId", "SourceQuestionBankId")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_tenant_id_source_question_ba~");
|
||||
|
||||
b.HasIndex("TenantId", "TargetCollectionId")
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_tenant_id_target_collection_~");
|
||||
|
||||
b.HasIndex("TenantId", "TargetEntryId")
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_tenant_id_target_entry_id");
|
||||
|
||||
b.HasIndex("TenantId", "TargetQuestionBankId")
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_tenant_id_target_question_ba~");
|
||||
|
||||
b.HasIndex("TenantId", "Status", "UpdatedAt")
|
||||
.HasDatabaseName("ix_tenant_question_bank_adoptions_tenant_id_status_updated_at");
|
||||
|
||||
b.ToTable("tenant_question_bank_adoptions", null, t =>
|
||||
{
|
||||
t.HasCheckConstraint("ck_tenant_question_bank_adoptions_copied_count", "copied_question_count >= 0");
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.UserWordFavorite", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
@@ -11228,6 +11781,30 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
.HasConstraintName("fk_tenant_usage_records_tenants_tenant_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.AiRecommendationReport", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Tenancy.Tenant", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_ai_recommendation_reports_tenants_tenant_id");
|
||||
|
||||
b.HasOne("Tiku.Domain.Identity.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_ai_recommendation_reports_users_user_id");
|
||||
|
||||
b.HasOne("Tiku.Domain.Catalog.Region", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId", "RegionId")
|
||||
.HasPrincipalKey("TenantId", "Id")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.HasConstraintName("fk_ai_recommendation_reports_regions_tenant_id_region_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.AppAsset", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Tenancy.Tenant", null)
|
||||
@@ -11294,6 +11871,46 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
.HasConstraintName("fk_content_assets_subjects_tenant_id_subject_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.ContentAssetAccessEvent", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Tenancy.Tenant", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_content_asset_access_events_tenants_tenant_id");
|
||||
|
||||
b.HasOne("Tiku.Domain.Identity.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("fk_content_asset_access_events_users_user_id");
|
||||
|
||||
b.HasOne("Tiku.Domain.Content.ContentAsset", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId", "AssetId")
|
||||
.HasPrincipalKey("TenantId", "Id")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.HasConstraintName("fk_content_asset_access_events_content_assets_tenant_id_asset_~");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.ContentAssetSecurityScanEvent", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Tenancy.Tenant", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_content_asset_security_scan_events_tenants_tenant_id");
|
||||
|
||||
b.HasOne("Tiku.Domain.Content.ContentAsset", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId", "AssetId")
|
||||
.HasPrincipalKey("TenantId", "Id")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.HasConstraintName("fk_content_asset_security_scan_events_content_assets_tenant_id~");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.ContentEntry", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Identity.User", null)
|
||||
@@ -11628,6 +12245,28 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
.HasConstraintName("fk_practice_blueprints_regions_tenant_id_region_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.QuestionBankGrant", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Identity.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CreatedBy")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("fk_question_bank_grants_users_created_by");
|
||||
|
||||
b.HasOne("Tiku.Domain.QuestionBanks.QuestionBank", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SourceQuestionBankId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_question_bank_grants_question_banks_source_question_bank_id");
|
||||
|
||||
b.HasOne("Tiku.Domain.Identity.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UpdatedBy")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("fk_question_bank_grants_users_updated_by");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.QuestionCollection", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Identity.User", null)
|
||||
@@ -11785,6 +12424,62 @@ namespace Tiku.Infrastructure.Persistence.Migrations
|
||||
.HasConstraintName("fk_subject_shares_subjects_tenant_id_target_subject_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.TenantQuestionBankAdoption", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Identity.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CreatedBy")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("fk_tenant_question_bank_adoptions_users_created_by");
|
||||
|
||||
b.HasOne("Tiku.Domain.Content.QuestionBankGrant", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("GrantId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("fk_tenant_question_bank_adoptions_question_bank_grants_grant_id");
|
||||
|
||||
b.HasOne("Tiku.Domain.QuestionBanks.QuestionBank", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SourceQuestionBankId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_tenant_question_bank_adoptions_question_banks_source_questi~");
|
||||
|
||||
b.HasOne("Tiku.Domain.Tenancy.Tenant", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_tenant_question_bank_adoptions_tenants_tenant_id");
|
||||
|
||||
b.HasOne("Tiku.Domain.Identity.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UpdatedBy")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("fk_tenant_question_bank_adoptions_users_updated_by");
|
||||
|
||||
b.HasOne("Tiku.Domain.Content.QuestionCollection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId", "TargetCollectionId")
|
||||
.HasPrincipalKey("TenantId", "Id")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.HasConstraintName("fk_tenant_question_bank_adoptions_question_collections_tenant_~");
|
||||
|
||||
b.HasOne("Tiku.Domain.Content.ContentEntry", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId", "TargetEntryId")
|
||||
.HasPrincipalKey("TenantId", "Id")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.HasConstraintName("fk_tenant_question_bank_adoptions_content_entries_tenant_id_ta~");
|
||||
|
||||
b.HasOne("Tiku.Domain.QuestionBanks.QuestionBank", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TenantId", "TargetQuestionBankId")
|
||||
.HasPrincipalKey("TenantId", "Id")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.HasConstraintName("fk_tenant_question_bank_adoptions_question_banks_tenant_id_tar~");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Tiku.Domain.Content.UserWordFavorite", b =>
|
||||
{
|
||||
b.HasOne("Tiku.Domain.Tenancy.Tenant", null)
|
||||
|
||||
Reference in New Issue
Block a user