43 lines
1.7 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|