Temporarily add denormalized enums for initial migration

This commit is contained in:
Laura Hausmann 2024-01-07 16:54:36 +01:00
parent 57e27b7835
commit dc32bf91f0
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
3 changed files with 32 additions and 10 deletions

View file

@ -132,10 +132,10 @@ public class DatabaseContext : DbContext {
dataSourceBuilder.MapEnum<Note.NoteVisibility>(); dataSourceBuilder.MapEnum<Note.NoteVisibility>();
dataSourceBuilder.MapEnum<Notification.NotificationType>(); dataSourceBuilder.MapEnum<Notification.NotificationType>();
dataSourceBuilder.MapEnum<Page.PageVisibility>(); dataSourceBuilder.MapEnum<Page.PageVisibility>();
//dataSourceBuilder.MapEnum<Poll.PollNoteVisibility>(); // FIXME: WHY IS THIS ITS OWN ENUM dataSourceBuilder.MapEnum<Poll.PollNoteVisibility>(); // FIXME: WHY IS THIS ITS OWN ENUM
dataSourceBuilder.MapEnum<Relay.RelayStatus>(); dataSourceBuilder.MapEnum<Relay.RelayStatus>();
dataSourceBuilder.MapEnum<UserProfile.UserProfileFFVisibility>(); dataSourceBuilder.MapEnum<UserProfile.UserProfileFFVisibility>();
//dataSourceBuilder.MapEnum<UserProfile.MutingNotificationTypes>(); // FIXME: WHY IS THIS ITS OWN ENUM dataSourceBuilder.MapEnum<UserProfile.MutingNotificationType>(); // FIXME: WHY IS THIS ITS OWN ENUM
optionsBuilder.UseNpgsql(dataSourceBuilder.Build()); optionsBuilder.UseNpgsql(dataSourceBuilder.Build());
} }
@ -143,18 +143,14 @@ public class DatabaseContext : DbContext {
protected override void OnModelCreating(ModelBuilder modelBuilder) { protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder modelBuilder
.HasPostgresEnum<Antenna.AntennaSource>() .HasPostgresEnum<Antenna.AntennaSource>()
//.HasPostgresEnum("log_level_enum", ["error", "warning", "info", "success", "debug"]) // TODO: not in use, add migration that removes this if it exists .HasPostgresEnum("log_level_enum", ["error", "warning", "info", "success", "debug"]) // TODO: not in use, add migration that removes this if it exists
.HasPostgresEnum<Note.NoteVisibility>() .HasPostgresEnum<Note.NoteVisibility>()
.HasPostgresEnum<Notification.NotificationType>() .HasPostgresEnum<Notification.NotificationType>()
.HasPostgresEnum<Page.PageVisibility>() .HasPostgresEnum<Page.PageVisibility>()
.HasPostgresEnum("poll_notevisibility_enum", ["public", "home", "followers", "specified", "hidden"]) .HasPostgresEnum<Poll.PollNoteVisibility>() //TODO: merge with regular notevisibility enum
.HasPostgresEnum<Relay.RelayStatus>() .HasPostgresEnum<Relay.RelayStatus>()
.HasPostgresEnum<UserProfile.UserProfileFFVisibility>() .HasPostgresEnum<UserProfile.UserProfileFFVisibility>()
.HasPostgresEnum("user_profile_mutingnotificationtypes_enum", .HasPostgresEnum<UserProfile.MutingNotificationType>() //TODO: merge with regular notification types enum
[
"follow", "mention", "reply", "renote", "quote", "reaction", "pollVote", "pollEnded",
"receiveFollowRequest", "followRequestAccepted", "groupInvited", "app"
])
.HasPostgresExtension("pg_trgm"); .HasPostgresExtension("pg_trgm");
modelBuilder.Entity<AbuseUserReport>(entity => { modelBuilder.Entity<AbuseUserReport>(entity => {

View file

@ -1,6 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using NpgsqlTypes;
namespace Iceshrimp.Backend.Core.Database.Tables; namespace Iceshrimp.Backend.Core.Database.Tables;
@ -44,5 +45,14 @@ public class Poll {
/// [Denormalized] /// [Denormalized]
/// </summary> /// </summary>
[Column("noteVisibility")] [Column("noteVisibility")]
public Note.NoteVisibility NoteVisibility { get; set; } public PollNoteVisibility NoteVisibility { get; set; }
[PgName("poll_notevisibility_enum")]
public enum PollNoteVisibility {
[PgName("public")] Public,
[PgName("home")] Home,
[PgName("followers")] Followers,
[PgName("specified")] Specified,
[PgName("hidden")] Hidden
}
} }

View file

@ -168,4 +168,20 @@ public class UserProfile {
[PgName("followers")] Followers, [PgName("followers")] Followers,
[PgName("private")] Private, [PgName("private")] Private,
} }
[PgName("user_profile_mutingnotificationtypes_enum")]
public enum MutingNotificationType {
[PgName("follow")] Follow,
[PgName("mention")] Mention,
[PgName("reply")] Reply,
[PgName("renote")] Renote,
[PgName("quote")] Quote,
[PgName("reaction")] Reaction,
[PgName("pollVote")] PollVote,
[PgName("pollEnded")] PollEnded,
[PgName("receiveFollowRequest")] FollowRequestReceived,
[PgName("followRequestAccepted")] FollowRequestAccepted,
[PgName("groupInvited")] GroupInvited,
[PgName("app")] App,
}
} }