From 54307d75827cdf54d44f7fcdc7ff8094e306038c Mon Sep 17 00:00:00 2001 From: AlanMoonbase Date: Wed, 26 Feb 2025 13:04:50 -0800 Subject: [PATCH] initial data model work --- src/Model/DBContext.cs | 9 +++++++++ src/Model/UserBan.cs | 19 +++++++++++++++++++ src/Model/Viking.cs | 1 + src/Schema/UserBanType.cs | 9 +++++++++ 4 files changed, 38 insertions(+) create mode 100644 src/Model/UserBan.cs create mode 100644 src/Schema/UserBanType.cs diff --git a/src/Model/DBContext.cs b/src/Model/DBContext.cs index 1832763..bc1a0c9 100644 --- a/src/Model/DBContext.cs +++ b/src/Model/DBContext.cs @@ -30,6 +30,7 @@ public class DBContext : DbContext { public DbSet RatingRanks { get; set; } = null!; public DbSet UserMissionData { get; set; } = null!; public DbSet UserBadgesCompleted { get; set; } = null!; + public DbSet Bans { get; set; } = null!; private readonly IOptions config; @@ -156,6 +157,9 @@ public class DBContext : DbContext { builder.Entity().HasMany(v => v.UserBadgesCompleted) .WithOne(r => r.Viking); + builder.Entity().HasMany(v => v.UserBans) + .WithOne(r => r.Viking); + // Dragons builder.Entity().HasOne(d => d.Viking) .WithMany(e => e.Dragons) @@ -301,5 +305,10 @@ public class DBContext : DbContext { builder.Entity().HasOne(r => r.Viking) .WithMany(v => v.UserBadgesCompleted) .HasForeignKey(r => r.VikingId); + + // Bans + builder.Entity().HasOne(r => r.Viking) + .WithMany(e => e.UserBans) + .HasForeignKey(e => e.VikingId); } } diff --git a/src/Model/UserBan.cs b/src/Model/UserBan.cs new file mode 100644 index 0000000..c7bcb0d --- /dev/null +++ b/src/Model/UserBan.cs @@ -0,0 +1,19 @@ +using System; +using System.ComponentModel.DataAnnotations; +using sodoff.Schema; + +namespace sodoff.Model; + +public class UserBan +{ + [Key] + public int Id { get; set; } + + public int VikingId { get; set; } + + public UserBanType UserBanType { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime? ExpiresOn { get; set; } + + public virtual Viking? Viking { get; set; } +} diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs index a787107..0578525 100644 --- a/src/Model/Viking.cs +++ b/src/Model/Viking.cs @@ -44,6 +44,7 @@ public class Viking { public virtual Dragon? SelectedDragon { get; set; } public virtual ICollection UserMissions { get; set; } = null!; public virtual ICollection UserBadgesCompleted { get; set; } = null!; + public virtual ICollection UserBans { get; set; } = null!; public DateTime? CreationDate { get; set; } public DateTime? BirthDate { get; set; } diff --git a/src/Schema/UserBanType.cs b/src/Schema/UserBanType.cs new file mode 100644 index 0000000..9a3a892 --- /dev/null +++ b/src/Schema/UserBanType.cs @@ -0,0 +1,9 @@ +namespace sodoff.Schema; + +public enum UserBanType +{ + IndefiniteOpenChatBan = 1, + TemporaryOpenChatBan = 2, + IndefiniteAccountBan = 3, + TemporaryAccountBan = 4 +}