diff --git a/DysonNetwork.Shared/Models/Publisher.cs b/DysonNetwork.Shared/Models/Publisher.cs
index 3a0439e4..3d0f91c3 100644
--- a/DysonNetwork.Shared/Models/Publisher.cs
+++ b/DysonNetwork.Shared/Models/Publisher.cs
@@ -194,13 +194,6 @@ public class SnPublisherMember : ModelBase
}
}
-public enum PublisherSubscriptionStatus
-{
- Active,
- Expired,
- Cancelled
-}
-
public class SnPublisherSubscription : ModelBase
{
public Guid Id { get; set; }
@@ -208,9 +201,6 @@ public class SnPublisherSubscription : ModelBase
public Guid PublisherId { get; set; }
public SnPublisher Publisher { get; set; } = null!;
public Guid AccountId { get; set; }
-
- public PublisherSubscriptionStatus Status { get; set; } = PublisherSubscriptionStatus.Active;
- public int Tier { get; set; } = 0;
}
public class SnPublisherFeature : ModelBase
diff --git a/DysonNetwork.Sphere/Migrations/20260111165219_RemoveSubscriptionTierAndStatus.Designer.cs b/DysonNetwork.Sphere/Migrations/20260111165219_RemoveSubscriptionTierAndStatus.Designer.cs
new file mode 100644
index 00000000..9a2ecedc
--- /dev/null
+++ b/DysonNetwork.Sphere/Migrations/20260111165219_RemoveSubscriptionTierAndStatus.Designer.cs
@@ -0,0 +1,1798 @@
+//
+using System;
+using System.Collections.Generic;
+using System.Text.Json;
+using DysonNetwork.Shared.Models;
+using DysonNetwork.Sphere;
+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.Sphere.Migrations
+{
+ [DbContext(typeof(AppDatabase))]
+ [Migration("20260111165219_RemoveSubscriptionTierAndStatus")]
+ partial class RemoveSubscriptionTierAndStatus
+ {
+ ///
+ 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.Shared.Models.SnActivityPubDelivery", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("activity_id");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("activity_type");
+
+ b.Property("ActorUri")
+ .IsRequired()
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("actor_uri");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("ErrorMessage")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("error_message");
+
+ b.Property("InboxUri")
+ .IsRequired()
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("inbox_uri");
+
+ b.Property("LastAttemptAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_attempt_at");
+
+ b.Property("NextRetryAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("next_retry_at");
+
+ b.Property("ResponseStatusCode")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("response_status_code");
+
+ b.Property("RetryCount")
+ .HasColumnType("integer")
+ .HasColumnName("retry_count");
+
+ b.Property("SentAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("sent_at");
+
+ b.Property("Status")
+ .HasColumnType("integer")
+ .HasColumnName("status");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_activity_pub_deliveries");
+
+ b.ToTable("activity_pub_deliveries", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnFediverseActor", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("AvatarUrl")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("avatar_url");
+
+ b.Property("Bio")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("bio");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("DisplayName")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("display_name");
+
+ b.Property("FeaturedUri")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("featured_uri");
+
+ b.Property("FollowersUri")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("followers_uri");
+
+ b.Property("FollowingUri")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("following_uri");
+
+ b.Property("HeaderUrl")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("header_url");
+
+ b.Property("InboxUri")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("inbox_uri");
+
+ b.Property("InstanceId")
+ .HasColumnType("uuid")
+ .HasColumnName("instance_id");
+
+ b.Property("IsBot")
+ .HasColumnType("boolean")
+ .HasColumnName("is_bot");
+
+ b.Property("IsDiscoverable")
+ .HasColumnType("boolean")
+ .HasColumnName("is_discoverable");
+
+ b.Property("IsLocked")
+ .HasColumnType("boolean")
+ .HasColumnName("is_locked");
+
+ b.Property("LastActivityAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_activity_at");
+
+ b.Property("LastFetchedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_fetched_at");
+
+ b.Property>("Metadata")
+ .HasColumnType("jsonb")
+ .HasColumnName("metadata");
+
+ b.Property("OutboxUri")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("outbox_uri");
+
+ b.Property("PublicKey")
+ .HasMaxLength(8192)
+ .HasColumnType("character varying(8192)")
+ .HasColumnName("public_key");
+
+ b.Property("PublicKeyId")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("public_key_id");
+
+ b.Property("PublisherId")
+ .HasColumnType("uuid")
+ .HasColumnName("publisher_id");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("type");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.Property("Uri")
+ .IsRequired()
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("uri");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("username");
+
+ b.HasKey("Id")
+ .HasName("pk_fediverse_actors");
+
+ b.HasIndex("InstanceId")
+ .HasDatabaseName("ix_fediverse_actors_instance_id");
+
+ b.HasIndex("Uri")
+ .IsUnique()
+ .HasDatabaseName("ix_fediverse_actors_uri");
+
+ b.ToTable("fediverse_actors", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnFediverseInstance", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("ActiveUsers")
+ .HasColumnType("integer")
+ .HasColumnName("active_users");
+
+ b.Property("BlockReason")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("block_reason");
+
+ b.Property("ContactAccountUsername")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("contact_account_username");
+
+ b.Property("ContactEmail")
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)")
+ .HasColumnName("contact_email");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Description")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("description");
+
+ b.Property("Domain")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("domain");
+
+ b.Property("IconUrl")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("icon_url");
+
+ b.Property("IsBlocked")
+ .HasColumnType("boolean")
+ .HasColumnName("is_blocked");
+
+ b.Property("IsSilenced")
+ .HasColumnType("boolean")
+ .HasColumnName("is_silenced");
+
+ b.Property("LastActivityAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_activity_at");
+
+ b.Property("LastFetchedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_fetched_at");
+
+ b.Property>("Metadata")
+ .HasColumnType("jsonb")
+ .HasColumnName("metadata");
+
+ b.Property("MetadataFetchedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("metadata_fetched_at");
+
+ b.Property("Name")
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)")
+ .HasColumnName("name");
+
+ b.Property("Software")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("software");
+
+ b.Property("ThumbnailUrl")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("thumbnail_url");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.Property("Version")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("version");
+
+ b.HasKey("Id")
+ .HasName("pk_fediverse_instances");
+
+ b.HasIndex("Domain")
+ .IsUnique()
+ .HasDatabaseName("ix_fediverse_instances_domain");
+
+ b.ToTable("fediverse_instances", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnFediverseRelationship", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("ActorId")
+ .HasColumnType("uuid")
+ .HasColumnName("actor_id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("FollowedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("followed_at");
+
+ b.Property("FollowedBackAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("followed_back_at");
+
+ b.Property("IsBlocking")
+ .HasColumnType("boolean")
+ .HasColumnName("is_blocking");
+
+ b.Property("IsMuting")
+ .HasColumnType("boolean")
+ .HasColumnName("is_muting");
+
+ b.Property("RejectReason")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("reject_reason");
+
+ b.Property("State")
+ .HasColumnType("integer")
+ .HasColumnName("state");
+
+ b.Property("TargetActorId")
+ .HasColumnType("uuid")
+ .HasColumnName("target_actor_id");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_fediverse_relationships");
+
+ b.HasIndex("ActorId")
+ .HasDatabaseName("ix_fediverse_relationships_actor_id");
+
+ b.HasIndex("TargetActorId")
+ .HasDatabaseName("ix_fediverse_relationships_target_actor_id");
+
+ b.ToTable("fediverse_relationships", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPoll", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Description")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("description");
+
+ b.Property("EndedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("ended_at");
+
+ b.Property("IsAnonymous")
+ .HasColumnType("boolean")
+ .HasColumnName("is_anonymous");
+
+ b.Property("PublisherId")
+ .HasColumnType("uuid")
+ .HasColumnName("publisher_id");
+
+ b.Property("Title")
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)")
+ .HasColumnName("title");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_polls");
+
+ b.HasIndex("PublisherId")
+ .HasDatabaseName("ix_polls_publisher_id");
+
+ b.ToTable("polls", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPollAnswer", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("AccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("account_id");
+
+ b.Property>("Answer")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("answer");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("PollId")
+ .HasColumnType("uuid")
+ .HasColumnName("poll_id");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_poll_answers");
+
+ b.HasIndex("PollId")
+ .HasDatabaseName("ix_poll_answers_poll_id");
+
+ b.ToTable("poll_answers", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPollQuestion", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Description")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("description");
+
+ b.Property("IsRequired")
+ .HasColumnType("boolean")
+ .HasColumnName("is_required");
+
+ b.Property>("Options")
+ .HasColumnType("jsonb")
+ .HasColumnName("options");
+
+ b.Property("Order")
+ .HasColumnType("integer")
+ .HasColumnName("order");
+
+ b.Property("PollId")
+ .HasColumnType("uuid")
+ .HasColumnName("poll_id");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)")
+ .HasColumnName("title");
+
+ b.Property("Type")
+ .HasColumnType("integer")
+ .HasColumnName("type");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_poll_questions");
+
+ b.HasIndex("PollId")
+ .HasDatabaseName("ix_poll_questions_poll_id");
+
+ b.ToTable("poll_questions", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPost", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("ActorId")
+ .HasColumnType("uuid")
+ .HasColumnName("actor_id");
+
+ b.Property>("Attachments")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("attachments");
+
+ b.Property("AwardedScore")
+ .HasColumnType("numeric")
+ .HasColumnName("awarded_score");
+
+ b.Property("BoostCount")
+ .HasColumnType("integer")
+ .HasColumnName("boost_count");
+
+ b.Property("Content")
+ .HasColumnType("text")
+ .HasColumnName("content");
+
+ b.Property("ContentType")
+ .HasColumnType("integer")
+ .HasColumnName("content_type");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Description")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("description");
+
+ b.Property("Downvotes")
+ .HasColumnType("integer")
+ .HasColumnName("downvotes");
+
+ b.Property("EditedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("edited_at");
+
+ b.Property("EmbedView")
+ .HasColumnType("jsonb")
+ .HasColumnName("embed_view");
+
+ b.Property("FediverseType")
+ .HasColumnType("integer")
+ .HasColumnName("fediverse_type");
+
+ b.Property("FediverseUri")
+ .HasMaxLength(8192)
+ .HasColumnType("character varying(8192)")
+ .HasColumnName("fediverse_uri");
+
+ b.Property("ForwardedGone")
+ .HasColumnType("boolean")
+ .HasColumnName("forwarded_gone");
+
+ b.Property("ForwardedPostId")
+ .HasColumnType("uuid")
+ .HasColumnName("forwarded_post_id");
+
+ b.Property("Language")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("language");
+
+ b.Property>("Mentions")
+ .HasColumnType("jsonb")
+ .HasColumnName("mentions");
+
+ b.Property>("Metadata")
+ .HasColumnType("jsonb")
+ .HasColumnName("metadata")
+ .HasJsonPropertyName("meta");
+
+ b.Property("PinMode")
+ .HasColumnType("integer")
+ .HasColumnName("pin_mode");
+
+ b.Property("PublishedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("published_at");
+
+ b.Property("PublisherId")
+ .HasColumnType("uuid")
+ .HasColumnName("publisher_id");
+
+ b.Property("RealmId")
+ .HasColumnType("uuid")
+ .HasColumnName("realm_id");
+
+ b.Property("RepliedGone")
+ .HasColumnType("boolean")
+ .HasColumnName("replied_gone");
+
+ b.Property("RepliedPostId")
+ .HasColumnType("uuid")
+ .HasColumnName("replied_post_id");
+
+ b.Property("RepliesCount")
+ .HasColumnType("integer")
+ .HasColumnName("replies_count");
+
+ b.PrimitiveCollection("SensitiveMarks")
+ .HasColumnType("jsonb")
+ .HasColumnName("sensitive_marks");
+
+ b.Property("Slug")
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)")
+ .HasColumnName("slug");
+
+ b.Property("Title")
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)")
+ .HasColumnName("title");
+
+ b.Property("Type")
+ .HasColumnType("integer")
+ .HasColumnName("type");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.Property("Upvotes")
+ .HasColumnType("integer")
+ .HasColumnName("upvotes");
+
+ b.Property("ViewsTotal")
+ .HasColumnType("integer")
+ .HasColumnName("views_total");
+
+ b.Property("ViewsUnique")
+ .HasColumnType("integer")
+ .HasColumnName("views_unique");
+
+ b.Property("Visibility")
+ .HasColumnType("integer")
+ .HasColumnName("visibility");
+
+ b.HasKey("Id")
+ .HasName("pk_posts");
+
+ b.HasIndex("ActorId")
+ .HasDatabaseName("ix_posts_actor_id");
+
+ b.HasIndex("ForwardedPostId")
+ .HasDatabaseName("ix_posts_forwarded_post_id");
+
+ b.HasIndex("PublisherId")
+ .HasDatabaseName("ix_posts_publisher_id");
+
+ b.HasIndex("RepliedPostId")
+ .HasDatabaseName("ix_posts_replied_post_id");
+
+ b.ToTable("posts", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPostAward", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("AccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("account_id");
+
+ b.Property("Amount")
+ .HasColumnType("numeric")
+ .HasColumnName("amount");
+
+ b.Property("Attitude")
+ .HasColumnType("integer")
+ .HasColumnName("attitude");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Message")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("message");
+
+ b.Property("PostId")
+ .HasColumnType("uuid")
+ .HasColumnName("post_id");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_post_awards");
+
+ b.HasIndex("PostId")
+ .HasDatabaseName("ix_post_awards_post_id");
+
+ b.ToTable("post_awards", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPostCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("name");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("slug");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_post_categories");
+
+ b.ToTable("post_categories", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPostCategorySubscription", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("AccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("account_id");
+
+ b.Property("CategoryId")
+ .HasColumnType("uuid")
+ .HasColumnName("category_id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("TagId")
+ .HasColumnType("uuid")
+ .HasColumnName("tag_id");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_post_category_subscriptions");
+
+ b.HasIndex("CategoryId")
+ .HasDatabaseName("ix_post_category_subscriptions_category_id");
+
+ b.HasIndex("TagId")
+ .HasDatabaseName("ix_post_category_subscriptions_tag_id");
+
+ b.ToTable("post_category_subscriptions", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPostCollection", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Description")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("description");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("name");
+
+ b.Property("PublisherId")
+ .HasColumnType("uuid")
+ .HasColumnName("publisher_id");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("slug");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_post_collections");
+
+ b.HasIndex("PublisherId")
+ .HasDatabaseName("ix_post_collections_publisher_id");
+
+ b.ToTable("post_collections", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPostFeaturedRecord", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("FeaturedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("featured_at");
+
+ b.Property("PostId")
+ .HasColumnType("uuid")
+ .HasColumnName("post_id");
+
+ b.Property("SocialCredits")
+ .HasColumnType("integer")
+ .HasColumnName("social_credits");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_post_featured_records");
+
+ b.HasIndex("PostId")
+ .HasDatabaseName("ix_post_featured_records_post_id");
+
+ b.ToTable("post_featured_records", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPostReaction", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("AccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("account_id");
+
+ b.Property("ActorId")
+ .HasColumnType("uuid")
+ .HasColumnName("actor_id");
+
+ b.Property("Attitude")
+ .HasColumnType("integer")
+ .HasColumnName("attitude");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("FediverseUri")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)")
+ .HasColumnName("fediverse_uri");
+
+ b.Property("IsLocal")
+ .HasColumnType("boolean")
+ .HasColumnName("is_local");
+
+ b.Property("PostId")
+ .HasColumnType("uuid")
+ .HasColumnName("post_id");
+
+ b.Property("Symbol")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("symbol");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_post_reactions");
+
+ b.HasIndex("ActorId")
+ .HasDatabaseName("ix_post_reactions_actor_id");
+
+ b.HasIndex("PostId")
+ .HasDatabaseName("ix_post_reactions_post_id");
+
+ b.ToTable("post_reactions", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPostTag", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("name");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("slug");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_post_tags");
+
+ b.ToTable("post_tags", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPublisher", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("AccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("account_id");
+
+ b.Property("Background")
+ .HasColumnType("jsonb")
+ .HasColumnName("background");
+
+ b.Property("Bio")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("bio");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property>("Meta")
+ .HasColumnType("jsonb")
+ .HasColumnName("meta");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("name");
+
+ b.Property("Nick")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("nick");
+
+ b.Property("Picture")
+ .HasColumnType("jsonb")
+ .HasColumnName("picture");
+
+ b.Property("PrivateKeyPem")
+ .HasMaxLength(8192)
+ .HasColumnType("character varying(8192)")
+ .HasColumnName("private_key_pem");
+
+ b.Property("PublicKeyPem")
+ .HasMaxLength(8192)
+ .HasColumnType("character varying(8192)")
+ .HasColumnName("public_key_pem");
+
+ b.Property("RealmId")
+ .HasColumnType("uuid")
+ .HasColumnName("realm_id");
+
+ b.Property("Type")
+ .HasColumnType("integer")
+ .HasColumnName("type");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.Property("Verification")
+ .HasColumnType("jsonb")
+ .HasColumnName("verification");
+
+ b.HasKey("Id")
+ .HasName("pk_publishers");
+
+ b.HasIndex("Name")
+ .IsUnique()
+ .HasDatabaseName("ix_publishers_name");
+
+ b.ToTable("publishers", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPublisherFeature", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("ExpiredAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expired_at");
+
+ b.Property("Flag")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)")
+ .HasColumnName("flag");
+
+ b.Property("PublisherId")
+ .HasColumnType("uuid")
+ .HasColumnName("publisher_id");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_publisher_features");
+
+ b.HasIndex("PublisherId")
+ .HasDatabaseName("ix_publisher_features_publisher_id");
+
+ b.ToTable("publisher_features", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPublisherMember", b =>
+ {
+ b.Property("PublisherId")
+ .HasColumnType("uuid")
+ .HasColumnName("publisher_id");
+
+ b.Property("AccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("account_id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("JoinedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("joined_at");
+
+ b.Property("Role")
+ .HasColumnType("integer")
+ .HasColumnName("role");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("PublisherId", "AccountId")
+ .HasName("pk_publisher_members");
+
+ b.ToTable("publisher_members", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnPublisherSubscription", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("AccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("account_id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("PublisherId")
+ .HasColumnType("uuid")
+ .HasColumnName("publisher_id");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_publisher_subscriptions");
+
+ b.HasIndex("PublisherId")
+ .HasDatabaseName("ix_publisher_subscriptions_publisher_id");
+
+ b.ToTable("publisher_subscriptions", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.SnSticker", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Image")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("image");
+
+ b.Property("PackId")
+ .HasColumnType("uuid")
+ .HasColumnName("pack_id");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("slug");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_stickers");
+
+ b.HasIndex("PackId")
+ .HasDatabaseName("ix_stickers_pack_id");
+
+ b.HasIndex("Slug")
+ .HasDatabaseName("ix_stickers_slug");
+
+ b.ToTable("stickers", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.StickerPack", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)")
+ .HasColumnName("description");
+
+ b.Property("Icon")
+ .HasColumnType("jsonb")
+ .HasColumnName("icon");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)")
+ .HasColumnName("name");
+
+ b.Property("Prefix")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("prefix");
+
+ b.Property("PublisherId")
+ .HasColumnType("uuid")
+ .HasColumnName("publisher_id");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_sticker_packs");
+
+ b.HasIndex("Prefix")
+ .IsUnique()
+ .HasDatabaseName("ix_sticker_packs_prefix");
+
+ b.HasIndex("PublisherId")
+ .HasDatabaseName("ix_sticker_packs_publisher_id");
+
+ b.ToTable("sticker_packs", (string)null);
+ });
+
+ modelBuilder.Entity("DysonNetwork.Shared.Models.StickerPackOwnership", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("AccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("account_id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created_at");
+
+ b.Property("DeletedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("deleted_at");
+
+ b.Property("PackId")
+ .HasColumnType("uuid")
+ .HasColumnName("pack_id");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated_at");
+
+ b.HasKey("Id")
+ .HasName("pk_sticker_pack_ownerships");
+
+ b.HasIndex("PackId")
+ .HasDatabaseName("ix_sticker_pack_ownerships_pack_id");
+
+ b.ToTable("sticker_pack_ownerships", (string)null);
+ });
+
+ modelBuilder.Entity("SnPostSnPostCategory", b =>
+ {
+ b.Property("CategoriesId")
+ .HasColumnType("uuid")
+ .HasColumnName("categories_id");
+
+ b.Property("PostsId")
+ .HasColumnType("uuid")
+ .HasColumnName("posts_id");
+
+ b.HasKey("CategoriesId", "PostsId")
+ .HasName("pk_post_category_links");
+
+ b.HasIndex("PostsId")
+ .HasDatabaseName("ix_post_category_links_posts_id");
+
+ b.ToTable("post_category_links", (string)null);
+ });
+
+ modelBuilder.Entity("SnPostSnPostCollection", b =>
+ {
+ b.Property("CollectionsId")
+ .HasColumnType("uuid")
+ .HasColumnName("collections_id");
+
+ b.Property("PostsId")
+ .HasColumnType("uuid")
+ .HasColumnName("posts_id");
+
+ b.HasKey("CollectionsId", "PostsId")
+ .HasName("pk_post_collection_links");
+
+ b.HasIndex("PostsId")
+ .HasDatabaseName("ix_post_collection_links_posts_id");
+
+ b.ToTable("post_collection_links", (string)null);
+ });
+
+ modelBuilder.Entity("SnPostSnPostTag", b =>
+ {
+ b.Property("PostsId")
+ .HasColumnType("uuid")
+ .HasColumnName("posts_id");
+
+ b.Property