Files
Pf2eDataScrapper/Pf2e/Database/Pf2eDbContext.cs
T

188 lines
6.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using dotenv.net;
using dotenv.net.Utilities;
using Microsoft.EntityFrameworkCore;
using Pf2e.Database.Model.Base;
using Pf2e.Database.Model.Base.Keywords;
using Pf2e.Database.Model.Base.Source;
using Pf2e.Database.Model.Base.Targets;
using Pf2e.Database.Model.Common;
using Pf2e.Database.Model.Common.I18n;
using Pf2e.Database.Model.Enum;
using Pf2e.Database.Model.Structure;
using Pf2e.Database.Model.Structure.AncestryRelation;
using Pf2e.Database.Model.Structure.BackgroundRelation;
using Pf2e.Database.Model.Structure.ClassRelation;
using Pf2e.Database.Model.Structure.DeityRelation;
using Pf2e.Database.Model.Structure.FeatRelation;
using Pf2e.Database.Model.Structure.RitualRelation;
using Pf2e.Database.Model.Structure.SpellRelation;
namespace Pf2e.Database;
/// <summary>
/// Контекст базы данных.
///
/// Разделён на 2 файла для удобства навигации и чтения кода.
///
/// - в `Pf2eDbContext.cs` находится набор таблиц и конфигурация БД,
/// - в `Pf2eDbContextModel.cs` находится Fluent API описание связей в модели.
/// </summary>
// ReSharper disable once InconsistentNaming
public partial class Pf2eDbContext : DbContext
{
/// <summary>
/// Инициализирует новый экземпляр класса <see cref="Pf2eDbContext"/> без параметров.
/// </summary>
public Pf2eDbContext() { }
/// <summary>
/// Инициализирует новый экземпляр класса <see cref="Pf2eDbContext"/> с указанными параметрами конфигурации базы данных.
/// </summary>
/// <param name="options">Конфигурация базы данных.</param>
public Pf2eDbContext(DbContextOptions<Pf2eDbContext> options)
: base(options) { }
#region DbSets
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
public virtual DbSet<Model.Structure.Action> Actions { get; set; }
public virtual DbSet<Ancestry> Ancestries { get; set; }
public virtual DbSet<Archetype> Archetypes { get; set; }
public virtual DbSet<AncestryBoost> AncestryBoosts { get; set; }
public virtual DbSet<AncestryItem> AncestryItems { get; set; }
public virtual DbSet<AncestryLanguage> AncestryLanguages { get; set; }
public virtual DbSet<Background> Backgrounds { get; set; }
public virtual DbSet<BackgroundBoost> BackgroundBoosts { get; set; }
public virtual DbSet<BackgroundItem> BackgroundItems { get; set; }
public virtual DbSet<BackgroundTraining> BackgroundSkills { get; set; }
public virtual DbSet<Class> Classes { get; set; }
public virtual DbSet<ClassKeyAttribute> ClassKeyAbilities { get; set; }
public virtual DbSet<ClassProgression> ClassProgressions { get; set; }
public virtual DbSet<ClassTraining> ClassTrainings { get; set; }
public virtual DbSet<SubclassGroup> SubclassGroups { get; set; }
public virtual DbSet<Subclass> Subclasses { get; set; }
public virtual DbSet<Condition> Conditions { get; set; }
public virtual DbSet<Deity> Deities { get; set; }
public virtual DbSet<DeityAttribute> DeityAttributes { get; set; }
public virtual DbSet<DeityDomain> DeityDomains { get; set; }
public virtual DbSet<DeitySpell> DeitySpells { get; set; }
public virtual DbSet<DeityWeapon> DeityWeapons { get; set; }
public virtual DbSet<Domain> Domains { get; set; }
public virtual DbSet<Entity> Entities { get; set; }
public virtual DbSet<EntityAlias> EntityAliases { get; set; }
public virtual DbSet<EntityExternal> EntityExternals { get; set; }
public virtual DbSet<EntitySource> EntitySources { get; set; }
public virtual DbSet<ExternalTarget> ExternalTargets { get; set; }
public virtual DbSet<Feat> Feats { get; set; }
public virtual DbSet<FeatPrerequisite> FeatPrerequisites { get; set; }
public virtual DbSet<Frequency> Frequencies { get; set; }
public virtual DbSet<Heritage> Heritages { get; set; }
public virtual DbSet<Keyword> Keywords { get; set; }
public virtual DbSet<KeywordAlias> KeywordAliases { get; set; }
public virtual DbSet<Language> Languages { get; set; }
public virtual DbSet<LegacyRemaster> LegacyRemasters { get; set; }
public virtual DbSet<Ritual> Rituals { get; set; }
public virtual DbSet<RitualArea> RitualAreas { get; set; }
public virtual DbSet<RitualCheck> RitualChecks { get; set; }
public virtual DbSet<Rule> Rules { get; set; }
public virtual DbSet<Source> Sources { get; set; }
public virtual DbSet<Spell> Spells { get; set; }
public virtual DbSet<SpellArea> SpellAreas { get; set; }
public virtual DbSet<SpellDamage> SpellDamages { get; set; }
public virtual DbSet<SpellDefense> SpellDefenses { get; set; }
public virtual DbSet<Training> Trainings { get; set; }
public virtual DbSet<DeityCategory> DeityCategories { get; set; }
public virtual DbSet<Trait> Traits { get; set; }
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member
#endregion
/// <inheritdoc/>
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
DotEnv.Load(options: new DotEnvOptions(probeForEnv: true, probeLevelsToSearch: 2));
string databaseConnection = EnvReader.GetStringValue("DATABASE_CONNECTION");
// optionsBuilder.LogTo(Console.WriteLine);
optionsBuilder.UseSnakeCaseNamingConvention();
optionsBuilder.EnableSensitiveDataLogging();
optionsBuilder.UseNpgsql(
databaseConnection,
builder =>
{
builder
.MapEnum<LocaleType>()
.MapEnum<ActionCategory>()
.MapEnum<ActionEnum>()
.MapEnum<AttributeValues>()
.MapEnum<ClassProgressionType>()
.MapEnum<ConditionGroup>()
.MapEnum<DeityType>()
.MapEnum<DeityFonts>()
.MapEnum<DeitySanctification>()
.MapEnum<ElementEnum>()
.MapEnum<EntityRarity>()
.MapEnum<EntityType>()
.MapEnum<FeatCategory>()
.MapEnum<SizeEnum>()
.MapEnum<SourceCategory>()
.MapEnum<SpellAreaType>()
.MapEnum<SpellDamageCategory>()
.MapEnum<SpellDamageKinds>()
.MapEnum<SpellTradition>()
.MapEnum<TrainingRank>()
.MapEnum<TraitType>()
.MapEnum<VisionEnum>();
}
);
}
}