From b16bd1a2cb65d94037b802a5d72b9774438f8326 Mon Sep 17 00:00:00 2001 From: LuisMend12 Date: Sat, 25 Jan 2025 16:48:03 -0500 Subject: [PATCH] Db cleanup might wanna take a look at this --- Valour/Database/PermissionsNode.cs | 52 ++++++++++++++ Valour/Database/Planet.cs | 3 + Valour/Database/PlanetRole.cs | 91 ++++++++++++++++++++++++ Valour/Database/PrimaryNodeConnection.cs | 38 ++++++++++ Valour/Database/UserFriend.cs | 25 +++++++ 5 files changed, 209 insertions(+) diff --git a/Valour/Database/PermissionsNode.cs b/Valour/Database/PermissionsNode.cs index 38136870..b1ba4456 100644 --- a/Valour/Database/PermissionsNode.cs +++ b/Valour/Database/PermissionsNode.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore; using Valour.Shared.Models; namespace Valour.Database; @@ -67,5 +68,56 @@ public class PermissionsNode : ISharedPermissionsNode /// [Column("target_type")] public ChannelTypeEnum TargetType { get; set; } + + + public static void SetUpDbModel(ModelBuilder builder) + { + builder.Entity(e => + { + // ToTable + e.ToTable("permissions_nodes"); + + // Key + e.HasKey(x => x.Id); + + // Properties + + e.Property(x => x.Id) + .HasColumnName("id"); + + e.Property(x => x.PlanetId) + .HasColumnName("planet_id"); + + e.Property(x => x.Code) + .HasColumnName("code"); + + e.Property(x => x.Mask) + .HasColumnName("mask"); + + e.Property(x => x.RoleId) + .HasColumnName("role_id"); + + e.Property(x => x.TargetId) + .HasColumnName("target_id"); + + e.Property(x => x.TargetType) + .HasColumnName("target_type"); + + // Relationships + + e.HasOne(x => x.Planet) + .WithMany(x => x.PlanetNodes) + .HasForeignKey(x => x.PlanetId); + + + e.HasOne(x => x.Role) + .WithMany(x => x.PermissionNodes) + .HasForeignKey(x => x.RoleId); + + e.HasOne(x => x.Target) + .WithMany(x => x.Permissions) + .HasForeignKey(x => x.TargetId); + }); + } } diff --git a/Valour/Database/Planet.cs b/Valour/Database/Planet.cs index 522d557e..762cf4ee 100644 --- a/Valour/Database/Planet.cs +++ b/Valour/Database/Planet.cs @@ -23,6 +23,9 @@ public class Planet : ISharedPlanet [InverseProperty("Planet")] public virtual ICollection Channels { get; set; } + [InverseProperty("Planet")] + public virtual ICollection PlanetNodes { get; set; } + [InverseProperty("Planet")] public virtual ICollection Invites { get; set; } diff --git a/Valour/Database/PlanetRole.cs b/Valour/Database/PlanetRole.cs index 85892b84..232db061 100644 --- a/Valour/Database/PlanetRole.cs +++ b/Valour/Database/PlanetRole.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore; using Valour.Shared.Authorization; using Valour.Shared.Models; @@ -102,4 +103,94 @@ public uint GetAuthority() => public bool HasPermission(PlanetPermission perm) => ISharedPlanetRole.HasPermission(this, perm); + + + public static void SetUpDbModel(ModelBuilder builder) + { + builder.Entity(e => + { + // ToTable + e.ToTable("planet_roles"); + + // Key + + e.HasKey(x => x.Id); + + // Properties + + e.Property(x => x.Id) + .HasColumnName("id"); + + e.Property(x => x.IsAdmin) + .HasColumnName("is_admin"); + + e.Property(x => x.PlanetId) + .HasColumnName("planet_id"); + + e.Property(x => x.Position) + .HasColumnName("position"); + + e.Property(x => x.IsDefault) + .HasColumnName("is_default"); + + e.Property(x => x.Permissions) + .HasColumnName("permissions"); + + e.Property(x => x.ChatPermissions) + .HasColumnName("chat_perms"); + + e.Property(x => x.CategoryPermissions) + .HasColumnName("category_perms"); + + e.Property(x => x.VoicePermissions) + .HasColumnName("voice_perms"); + + e.Property(x => x.Color) + .HasColumnName("color"); + + e.Property(x => x.Bold) + .HasColumnName("bold"); + + e.Property(x => x.Italics) + .HasColumnName("italics"); + + e.Property(x => x.Name) + .HasColumnName("name"); + + e.Property(x => x.AnyoneCanMention) + .HasColumnName("anyone_can_mention"); + + // Relationships + + e.HasOne(x => x.Planet) + .WithMany(x => x.Roles) + .HasForeignKey(x => x.PlanetId); + + // Indices + + e.HasIndex(x => x.Position); + + e.HasIndex(x => x.IsDefault); + + e.HasIndex(x => x.Permissions); + + e.HasIndex(x => x.ChatPermissions); + + e.HasIndex(x => x.CategoryPermissions); + + e.HasIndex(x => x.VoicePermissions); + + e.HasIndex(x => x.Color); + + e.HasIndex(x => x.Bold); + + e.HasIndex(x => x.Italics); + + e.HasIndex(x => x.PlanetId); + + + + + }); + } } \ No newline at end of file diff --git a/Valour/Database/PrimaryNodeConnection.cs b/Valour/Database/PrimaryNodeConnection.cs index 31b7a5cb..c635b9c7 100644 --- a/Valour/Database/PrimaryNodeConnection.cs +++ b/Valour/Database/PrimaryNodeConnection.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore; namespace Valour.Database; @@ -38,4 +39,41 @@ public class PrimaryNodeConnection /// [Column("open_time")] public DateTime OpenTime { get; set; } + + + public static void SetUpDbModel(ModelBuilder builder) + { + builder.Entity(e => + { + // ToTable + e.ToTable("primary_node_connections"); + + // Key + e.HasKey(x => x.ConnectionId); + + // Properties + + e.Property(x => x.ConnectionId) + .HasColumnName("connection_id"); + + e.Property(x => x.NodeId) + .HasColumnName("node_id"); + + e.Property(x => x.UserId) + .HasColumnName("user_id"); + + e.Property(x => x.OpenTime) + .HasColumnName("open_time") + .HasConversion( + x => x, + x => new DateTime(x.Ticks, DateTimeKind.Utc) + ); + + // Relationships + + // Indices + + e.HasIndex(x => x.UserId); + }); + } } diff --git a/Valour/Database/UserFriend.cs b/Valour/Database/UserFriend.cs index c01b7693..ca0eda60 100644 --- a/Valour/Database/UserFriend.cs +++ b/Valour/Database/UserFriend.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore; using Valour.Shared.Models; namespace Valour.Database; @@ -36,6 +37,7 @@ public class UserFriend : ISharedUserFriend /// /// The id of the user friend model /// + [Column("model_id")] public long Id { get; set; } /// @@ -55,4 +57,27 @@ public object GetId() { return (UserId, FriendId); } + + public static void SetUpDbModel(ModelBuilder builder) + { + builder.Entity(e => + { + // ToTable + e.ToTable("user_friends"); + + // Key + e.HasKey(x => x.GetId()); + + // Properties + e.Property(x => x.UserId) + .HasColumnName("user_id"); + + e.Property(x => x.FriendId) + .HasColumnName("friend_id"); + + e.Property(x => x.Id) + .HasColumnName("id"); + + }); + } }