using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; namespace ChaosBot.Models { public class ChaosbotContext : DbContext { public DbSet LodestoneCharacter { get; set; } public DbSet LodestoneFreeCompany { get; set; } public DbSet Points { get; set; } public DbSet Raffles { get; set; } public DbSet CommandPermissions { get; set; } public DbSet Configuration { get; set; } public DbSet ExperiencePoints { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { if (Program.AppSettingsHandler == null) { Program.AppSettingsHandler = new ConfigurationBuilder() .SetBasePath(System.IO.Directory.GetCurrentDirectory()) .AddJsonFile("./appsettings.json", optional: false, reloadOnChange: true).Build(); } string server = Program.AppSettingsHandler.GetValue("Database:Host"); int port = Program.AppSettingsHandler.GetValue("Database:Port"); string user = Program.AppSettingsHandler.GetValue("Database:User"); string pass = Program.AppSettingsHandler.GetValue("Database:Pass"); string name = Program.AppSettingsHandler.GetValue("Database:Name"); optionsBuilder.UseMySql( $"server={server};port={port};user={user};password={pass};database={name}", x => x.ServerVersion("5.5.64-mariadb")); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasKey(x => new {x.DiscordGuildId, x.LodestoneId}); modelBuilder.Entity() .HasKey(x => new {x.DiscordGuildId, x.LodestoneId}); modelBuilder.Entity() .HasKey(x => new {x.DiscordGuildId, x.DiscordUserId}); modelBuilder.Entity() .HasKey(x => new {x.DiscordGuildId, x.DiscordUserId}); modelBuilder.Entity() .HasKey(x => new {x.DiscordGuildId, x.Key}); } } }