QuestShare/QuestShare.Server/Models/QuestShareContext.cs
2025-02-17 22:12:35 -05:00

43 lines
1.7 KiB
C#

using Microsoft.EntityFrameworkCore;
using QuestShare.Common.API;
using Serilog.Events;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Diagnostics.CodeAnalysis;
namespace QuestShare.Server.Models
{
public class QuestShareContext : DbContext
{
public QuestShareContext()
{
// Database.EnsureCreated();
}
public DbSet<Share> Shares { get; set; } = null!;
public DbSet<Client> Clients { get; set; } = null!;
public DbSet<Ban> Bans { get; set; } = null!;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql(Environment.GetEnvironmentVariable("QUESTSHARE_DATABASE"));
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Client>().ToTable("Clients");
modelBuilder.Entity<Client>().Property(a => a.Created).HasDefaultValueSql("current_timestamp");
modelBuilder.Entity<Client>().Property(a => a.LastUpdated).HasDefaultValueSql("current_timestamp").ValueGeneratedOnAddOrUpdate();
modelBuilder.Entity<Share>().ToTable("QuestShares");
modelBuilder.Entity<Share>().Property(a => a.Created).HasDefaultValueSql("current_timestamp");
modelBuilder.Entity<Share>().Property(a => a.LastUpdated).HasDefaultValueSql("current_timestamp").ValueGeneratedOnAddOrUpdate();
modelBuilder.Entity<Share>(x =>
{
x.HasOne(a => a.ShareHost).WithMany();
});
modelBuilder.Entity<Ban>().ToTable("Bans");
}
}
}