[backend/database] Create Pronouns column in UserProfile

This commit is contained in:
pancakes 2025-01-26 14:07:16 +10:00 committed by Laura Hausmann
parent f270b90fe9
commit 6001ff960a
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
3 changed files with 97 additions and 0 deletions

View file

@ -33,6 +33,7 @@ namespace Iceshrimp.Backend.Core.Database.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "push_subscription_policy_enum", new[] { "all", "followed", "follower", "none" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "relay_status_enum", new[] { "requesting", "accepted", "rejected" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "user_profile_ffvisibility_enum", new[] { "public", "followers", "private" });
NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "hstore");
NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "pg_trgm");
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@ -4656,6 +4657,11 @@ namespace Iceshrimp.Backend.Core.Database.Migrations
.HasColumnType("character varying(32)")
.HasColumnName("pinnedPageId");
b.Property<Dictionary<string, string>>("Pronouns")
.HasMaxLength(128)
.HasColumnType("hstore")
.HasColumnName("pronouns");
b.Property<string>("Url")
.HasMaxLength(512)
.HasColumnType("character varying(512)")

View file

@ -0,0 +1,87 @@
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Iceshrimp.Backend.Core.Database.Migrations
{
/// <inheritdoc />
[DbContext(typeof(DatabaseContext))]
[Migration("20250126040003_Pronouns")]
public partial class Pronouns : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances")
.Annotation("Npgsql:Enum:filter_action_enum", "warn,hide")
.Annotation("Npgsql:Enum:filter_context_enum", "home,lists,threads,notifications,accounts,public")
.Annotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed")
.Annotation("Npgsql:Enum:marker_type_enum", "home,notifications")
.Annotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified")
.Annotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite")
.Annotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified")
.Annotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none")
.Annotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected")
.Annotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private")
.Annotation("Npgsql:PostgresExtension:hstore", ",,")
.Annotation("Npgsql:PostgresExtension:pg_trgm", ",,")
.OldAnnotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances")
.OldAnnotation("Npgsql:Enum:filter_action_enum", "warn,hide")
.OldAnnotation("Npgsql:Enum:filter_context_enum", "home,lists,threads,notifications,accounts,public")
.OldAnnotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed")
.OldAnnotation("Npgsql:Enum:marker_type_enum", "home,notifications")
.OldAnnotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified")
.OldAnnotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite")
.OldAnnotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified")
.OldAnnotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none")
.OldAnnotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected")
.OldAnnotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private")
.OldAnnotation("Npgsql:PostgresExtension:pg_trgm", ",,");
migrationBuilder.AddColumn<Dictionary<string, string>>(
name: "pronouns",
table: "user_profile",
type: "hstore",
maxLength: 128,
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "pronouns",
table: "user_profile");
migrationBuilder.AlterDatabase()
.Annotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances")
.Annotation("Npgsql:Enum:filter_action_enum", "warn,hide")
.Annotation("Npgsql:Enum:filter_context_enum", "home,lists,threads,notifications,accounts,public")
.Annotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed")
.Annotation("Npgsql:Enum:marker_type_enum", "home,notifications")
.Annotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified")
.Annotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite")
.Annotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified")
.Annotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none")
.Annotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected")
.Annotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private")
.Annotation("Npgsql:PostgresExtension:pg_trgm", ",,")
.OldAnnotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances")
.OldAnnotation("Npgsql:Enum:filter_action_enum", "warn,hide")
.OldAnnotation("Npgsql:Enum:filter_context_enum", "home,lists,threads,notifications,accounts,public")
.OldAnnotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed")
.OldAnnotation("Npgsql:Enum:marker_type_enum", "home,notifications")
.OldAnnotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified")
.OldAnnotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite")
.OldAnnotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified")
.OldAnnotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none")
.OldAnnotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected")
.OldAnnotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private")
.OldAnnotation("Npgsql:PostgresExtension:hstore", ",,")
.OldAnnotation("Npgsql:PostgresExtension:pg_trgm", ",,");
}
}
}

View file

@ -71,6 +71,10 @@ public class UserProfile
[Column("mentions", TypeName = "jsonb")]
public List<Note.MentionedUser> Mentions { get; set; } = null!;
[Column("pronouns")]
[StringLength(128)]
public Dictionary<string, string>? Pronouns { get; set; }
[ForeignKey(nameof(PinnedPageId))]
[InverseProperty(nameof(Page.UserProfile))]
public virtual Page? PinnedPage { get; set; }