Files
CollabVMAuthServer/CollabVMAuthServer/Database/CollabVMAuthDbContext.cs
Elijah R 290a9a5777 major refactor:
- Now uses EntityFrameworkCore for database operations
- HTTP handlers have all been refactored to use ASP.NET MVC controllers, and generally to be more idiomatic and remove copied boilerplate ugliness
- Authentication/Authorization refactored to use native ASP.NET core handlers
- Switch to Microsoft.Extensions.Logging instead of handrolled logging method
2025-05-06 04:34:46 -04:00

175 lines
6.2 KiB
C#

using Computernewb.CollabVMAuthServer.Database.Schema;
using Microsoft.EntityFrameworkCore;
namespace Computernewb.CollabVMAuthServer.Database;
public partial class CollabVMAuthDbContext : DbContext
{
#pragma warning disable CS8618
public CollabVMAuthDbContext(DbContextOptions<CollabVMAuthDbContext> options)
: base(options)
{
}
#pragma warning restore CS8618
public virtual DbSet<Bot> Bots { get; set; }
public virtual DbSet<IpBan> IpBans { get; set; }
public virtual DbSet<Session> Sessions { get; set; }
public virtual DbSet<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.UseCollation("utf8mb4_unicode_ci")
.HasCharSet("utf8mb4");
modelBuilder.Entity<Bot>(entity =>
{
entity.HasKey(e => e.Id).HasName("PRIMARY");
entity.ToTable("bots");
entity.HasIndex(e => e.Owner, "owner");
entity.HasIndex(e => e.Token, "token").IsUnique();
entity.HasIndex(e => e.Username, "username").IsUnique();
entity.Property(e => e.Id)
.HasColumnType("int(10) unsigned")
.HasColumnName("id");
entity.Property(e => e.Created)
.HasDefaultValueSql("current_timestamp()")
.HasColumnType("timestamp")
.HasColumnName("created");
entity.Property(e => e.CvmRank)
.HasDefaultValueSql("'1'")
.HasColumnType("int(10) unsigned")
.HasColumnName("cvm_rank");
entity.Property(e => e.Owner)
.HasColumnName("owner");
entity.Property(e => e.Token)
.HasMaxLength(64)
.IsFixedLength()
.HasColumnName("token");
entity.Property(e => e.Username)
.HasMaxLength(20)
.HasColumnName("username");
entity.HasOne(d => d.OwnerNavigation).WithMany(p => p.Bots)
.HasPrincipalKey(p => p.Id)
.HasForeignKey(d => d.Owner)
.HasConstraintName("owner");
});
modelBuilder.Entity<IpBan>(entity =>
{
entity.HasKey(e => e.Ip).HasName("PRIMARY");
entity.ToTable("ip_bans");
entity.Property(e => e.Ip)
.HasMaxLength(16)
.HasColumnName("ip");
entity.Property(e => e.BannedAt)
.HasDefaultValueSql("current_timestamp()")
.HasColumnType("timestamp")
.HasColumnName("banned_at");
entity.Property(e => e.BannedBy)
.HasMaxLength(20)
.HasColumnName("banned_by");
entity.Property(e => e.Reason)
.HasColumnType("text")
.HasColumnName("reason");
});
modelBuilder.Entity<Session>(entity =>
{
entity.HasKey(e => e.Token).HasName("PRIMARY");
entity.ToTable("sessions");
entity.HasIndex(e => e.UserId, "user");
entity.Property(e => e.Token)
.HasMaxLength(32)
.IsFixedLength()
.HasColumnName("token");
entity.Property(e => e.Created)
.HasDefaultValueSql("current_timestamp()")
.HasColumnType("timestamp")
.HasColumnName("created");
entity.Property(e => e.LastIp)
.HasMaxLength(16)
.HasColumnName("last_ip");
entity.Property(e => e.LastUsed)
.HasDefaultValueSql("current_timestamp()")
.HasColumnType("timestamp")
.HasColumnName("last_used");
entity.Property(e => e.UserId)
.HasColumnName("user");
entity.HasOne(d => d.UserNavigation).WithMany(p => p.Sessions)
.HasPrincipalKey(p => p.Id)
.HasForeignKey(d => d.UserId)
.HasConstraintName("user");
});
modelBuilder.Entity<User>(entity =>
{
entity.HasKey(e => e.Id).HasName("PRIMARY");
entity.ToTable("users");
entity.HasIndex(e => e.Email, "email").IsUnique();
entity.HasIndex(e => e.Username, "username").IsUnique();
entity.Property(e => e.Id)
.HasColumnType("int(10) unsigned")
.HasColumnName("id");
entity.Property(e => e.BanReason)
.HasColumnType("text")
.HasColumnName("ban_reason");
entity.Property(e => e.Banned).HasColumnName("banned");
entity.Property(e => e.Created)
.HasDefaultValueSql("current_timestamp()")
.HasColumnType("timestamp")
.HasColumnName("created");
entity.Property(e => e.CvmRank)
.HasDefaultValueSql("'1'")
.HasColumnType("int(10) unsigned")
.HasColumnName("cvm_rank");
entity.Property(e => e.DateOfBirth).HasColumnName("date_of_birth");
entity.Property(e => e.Developer).HasColumnName("developer");
entity.Property(e => e.Email)
.HasColumnType("text")
.HasColumnName("email");
entity.Property(e => e.EmailVerificationCode)
.HasMaxLength(8)
.IsFixedLength()
.HasColumnName("email_verification_code");
entity.Property(e => e.EmailVerified).HasColumnName("email_verified");
entity.Property(e => e.Password)
.HasColumnType("text")
.HasColumnName("password");
entity.Property(e => e.PasswordResetCode)
.HasMaxLength(8)
.IsFixedLength()
.HasColumnName("password_reset_code");
entity.Property(e => e.RegistrationIp)
.HasMaxLength(16)
.HasColumnName("registration_ip");
entity.Property(e => e.Username)
.HasMaxLength(20)
.HasColumnName("username");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}