Документирование и небольшой рефакторинг модели.
This commit is contained in:
@@ -1,15 +1,30 @@
|
||||
using System.Reflection;
|
||||
using System.ComponentModel;
|
||||
using System.Reflection;
|
||||
using Pf2eModel.Model;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel;
|
||||
|
||||
/// <summary>
|
||||
/// Аттрибут, указывающий тип сущности.
|
||||
/// </summary>
|
||||
/// <param name="type">Тип сущности.</param>
|
||||
[AttributeUsage(AttributeTargets.Class)]
|
||||
public class EntityOfTypeAttribute(EntityType type) : Attribute
|
||||
{
|
||||
/// <summary>
|
||||
/// Тип сущности.
|
||||
/// </summary>
|
||||
public EntityType Type { get; } = type;
|
||||
|
||||
/// <summary>
|
||||
/// Метод для получения программного типа сущности по её типу.
|
||||
/// </summary>
|
||||
/// <param name="entity">Тип сущности.</param>
|
||||
/// <returns>Программный тип сущности.</returns>
|
||||
/// <exception cref="Exception">Если есть ошибка в структурах.</exception>
|
||||
/// <exception cref="InvalidEnumArgumentException">Тип сущности.</exception>
|
||||
public static Type Resolve(Entity entity)
|
||||
{
|
||||
foreach (Type type in Assembly.GetExecutingAssembly().GetTypes())
|
||||
@@ -21,7 +36,7 @@ public class EntityOfTypeAttribute(EntityType type) : Attribute
|
||||
|
||||
if (!type.IsAssignableTo(typeof(IEntity)))
|
||||
{
|
||||
throw new Exception(
|
||||
throw new(
|
||||
$"'EntityOfTypeAttribute' attribute should only be applied to children of 'IEntity' class. '{type.FullName}' is not."
|
||||
);
|
||||
}
|
||||
@@ -34,6 +49,8 @@ public class EntityOfTypeAttribute(EntityType type) : Attribute
|
||||
}
|
||||
}
|
||||
|
||||
throw new Exception($"Can't resolve class associated with '{entity.Type}' EntityType.");
|
||||
throw new InvalidEnumArgumentException(
|
||||
$"Can't resolve class associated with '{entity.Type}' EntityType."
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
+228
-142
@@ -13,7 +13,7 @@ using Pf2eModel.Model.Enum;
|
||||
namespace Pf2eModel.Migrations
|
||||
{
|
||||
[DbContext(typeof(Pf2eDbContext))]
|
||||
[Migration("20250508101742_1")]
|
||||
[Migration("20250510202833_1")]
|
||||
partial class _1
|
||||
{
|
||||
/// <inheritdoc />
|
||||
@@ -24,28 +24,28 @@ namespace Pf2eModel.Migrations
|
||||
.HasAnnotation("ProductVersion", "9.0.4")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "archetype", "class-feature", "class-feat", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_enum", new[] { "unknown", "1", "2", "3", "reaction", "free", "passive", "other", "1-3", "1-2", "2-3", "2/2 rounds", "reaction/1", "reaction/2", "reaction/3", "free/1", "1 minute", "5 minutes", "10 minutes", "30 minutes", "1 hour" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "dark-vision" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "free", "str", "dex", "con", "int", "wis", "cha" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "entity", "ancestry_feat", "class_feat", "general_feat", "skill_feat", "skill_increase" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "unknown", "senses", "abilities", "death", "attitudes", "detection" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "deity", "pantheon", "covenant", "philosophy" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "none", "heal", "harm", "any" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "holy", "unholy", "any" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "subclass_group", "subclass", "condition", "deity", "feat", "heritage", "spell", "ritual", "language", "rule" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "uncategorized", "ancestry-feature", "class-feature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign-feature" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "locale_type", new[] { "english", "legacy_english", "russian", "legacy", "hobby", "other" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens", "adventures", "comics", "blog-posts", "society" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder", "varies", "cuboid", "circle", "other" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "none", "divine", "occult", "arcane", "primal", "elemental", "all" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "untrained", "trained", "expert", "master", "legendary", "mythic" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "class", "tradition" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "archetype", "army_tactic", "army_war_action", "class-feat", "class-feature", "defensive", "familiar", "interaction", "kingdom_activity", "kingdom_feat", "kingdom_feature", "offensive", "unknown" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_enum", new[] { "1", "1 hour", "1 minute", "1-2", "1-3", "10 minutes", "2", "2-3", "2/2 rounds", "3", "30 minutes", "5 minutes", "free", "free/1", "other", "passive", "reaction", "reaction/1", "reaction/2", "reaction/3", "unknown" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "cha", "con", "dex", "free", "int", "str", "wis" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "ancestry_feat", "attribute_increase", "class_feat", "entity", "general_feat", "skill_feat", "skill_increase" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "abilities", "attitudes", "death", "detection", "senses", "unknown" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "covenant", "deity", "pantheon", "philosophy" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "any", "harm", "heal", "none" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "any", "holy", "unholy" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_enum", new[] { "air", "earth", "fire", "metal", "universal", "water", "wood" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "rare", "uncommon", "unique" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestry", "ancestry-feature", "archetype", "bonus", "calling", "campaign-feature", "class", "class-feature", "curse", "deityboon", "general", "pfsboon", "skill", "uncategorized" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "locale_type", new[] { "english", "hobby", "legacy", "legacy_english", "other", "russian" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size_enum", new[] { "huge", "large", "medium", "small", "tiny" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "adventure-path", "adventures", "blog-posts", "comics", "lost-omens", "rulebook", "society" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "circle", "cone", "cube", "cuboid", "cylinder", "emanation", "line", "other", "square", "varies" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "normal", "persistent", "splash" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "any", "damage", "healing" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "all", "arcane", "divine", "elemental", "none", "occult", "primal" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "expert", "legendary", "master", "mythic", "trained", "untrained" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "class", "regular", "tradition" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "vision_enum", new[] { "dark-vision", "low-light-vision", "normal" });
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("DeityTraining", b =>
|
||||
@@ -120,7 +120,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("description")
|
||||
.HasColumnOrder(6)
|
||||
.HasComment("Текстовое описание объекта");
|
||||
.HasComment("Текстовое описание сущности");
|
||||
|
||||
b.Property<string>("Img")
|
||||
.IsRequired()
|
||||
@@ -134,13 +134,13 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_checked")
|
||||
.HasColumnOrder(9)
|
||||
.HasComment("Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи");
|
||||
.HasComment("Флаг, указывающий, что сущность был проверен и не требует автоматической перезаписи");
|
||||
|
||||
b.Property<bool?>("IsTranslated")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_translated")
|
||||
.HasColumnOrder(8)
|
||||
.HasComment("Флаг, указывающий, что у объекта существует перевод");
|
||||
.HasComment("Флаг, указывающий, что у сущности существует перевод");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
@@ -152,7 +152,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<EntityRarity>("Rarity")
|
||||
.HasColumnType("entity_rarity")
|
||||
.HasColumnName("rarity")
|
||||
.HasColumnOrder(7);
|
||||
.HasColumnOrder(7)
|
||||
.HasComment("Редкость сущности");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.IsRequired()
|
||||
@@ -166,7 +167,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnType("entity_type")
|
||||
.HasColumnName("type")
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Тип объекта");
|
||||
.HasComment("Тип сущности");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_entities");
|
||||
@@ -188,14 +189,16 @@ namespace Pf2eModel.Migrations
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Отображаемое имя");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("slug")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Часть имени в URL");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_keywords");
|
||||
@@ -209,21 +212,24 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("KeywordId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("keyword_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор ключевого слова");
|
||||
|
||||
b.Property<string>("Value")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("value")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Синоним");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_keyword_aliases");
|
||||
@@ -240,14 +246,16 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(0);
|
||||
.HasColumnOrder(0)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("entity_id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор сущности");
|
||||
|
||||
b.Property<bool>("IsRemaster")
|
||||
.HasColumnType("boolean")
|
||||
@@ -258,7 +266,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("SourceId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("source_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор источника");
|
||||
|
||||
b.Property<string>("Suffix")
|
||||
.IsRequired()
|
||||
@@ -286,26 +295,30 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<SourceCategory>("Category")
|
||||
.HasColumnType("source_category")
|
||||
.HasColumnName("category")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Категория источника");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Отображаемое имя");
|
||||
|
||||
b.Property<DateOnly?>("ReleaseDate")
|
||||
.HasColumnType("date")
|
||||
.HasColumnName("release_date")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Дата выхода источника");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_sources");
|
||||
@@ -318,12 +331,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("entity_id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор сущности");
|
||||
|
||||
b.Property<int>("TargetId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("target_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор цели");
|
||||
|
||||
b.Property<string>("Md5")
|
||||
.IsRequired()
|
||||
@@ -331,7 +346,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("md5")
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Контроль версии объекта");
|
||||
.HasComment("Контрольная сумма объекта");
|
||||
|
||||
b.Property<string>("Suffix")
|
||||
.IsRequired()
|
||||
@@ -356,7 +371,8 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
@@ -365,21 +381,24 @@ namespace Pf2eModel.Migrations
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("icon")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Иконка цели");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Отображаемое имя");
|
||||
|
||||
b.Property<string>("Prefix")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("prefix")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Префикс для URL-адреса внешней ссылки");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_external_targets");
|
||||
@@ -393,24 +412,28 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("Max")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("max")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Максимальная продолжительсность");
|
||||
|
||||
b.Property<int>("Per")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("per")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Частота использования");
|
||||
|
||||
b.Property<int?>("Value")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("value")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Значение использования");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_frequencies");
|
||||
@@ -424,7 +447,8 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
@@ -432,12 +456,14 @@ namespace Pf2eModel.Migrations
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Название способности");
|
||||
|
||||
b.Property<int>("Type")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("type")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Тип способности");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_trainings");
|
||||
@@ -450,17 +476,20 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<ActionEnum>("Actions")
|
||||
.HasColumnType("action_enum")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Количество действий");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_actions");
|
||||
@@ -473,28 +502,33 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int>("Hp")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("hp")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Количество очков здоровья");
|
||||
|
||||
b.PrimitiveCollection<Size[]>("Size")
|
||||
b.PrimitiveCollection<SizeEnum[]>("Size")
|
||||
.IsRequired()
|
||||
.HasColumnType("size[]")
|
||||
.HasColumnType("size_enum[]")
|
||||
.HasColumnName("size")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Размеры родословной");
|
||||
|
||||
b.Property<int>("Speed")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("speed")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Скорость передвижения");
|
||||
|
||||
b.Property<AncestryVision>("Vision")
|
||||
.HasColumnType("ancestry_vision")
|
||||
.HasColumnName("vision")
|
||||
.HasColumnOrder(5);
|
||||
b.Property<VisionEnum>("VisionEnum")
|
||||
.HasColumnType("vision_enum")
|
||||
.HasColumnName("vision_enum")
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Тип зрения");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_ancestries");
|
||||
@@ -593,22 +627,26 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int?>("DedicationFeatId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("dedication_feat_id")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("ID посвящения");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("level")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Уровень");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_archetypes");
|
||||
@@ -644,7 +682,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_backgrounds");
|
||||
@@ -746,32 +785,32 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int>("AdditionalTrainedSkills")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("additional_trained_skills")
|
||||
.HasColumnOrder(7);
|
||||
.HasColumnOrder(7)
|
||||
.HasComment("Дополнительные навыки");
|
||||
|
||||
b.Property<int>("Hp")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("hp")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<int>("Perception")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("perception")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Количество очков здоровья");
|
||||
|
||||
b.Property<bool>("Spellcasting")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("spellcasting")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Заклинатель?");
|
||||
|
||||
b.Property<SpellTradition>("Tradition")
|
||||
b.Property<SpellTradition?>("Tradition")
|
||||
.HasColumnType("spell_tradition")
|
||||
.HasColumnName("tradition")
|
||||
.HasColumnOrder(6);
|
||||
.HasColumnOrder(6)
|
||||
.HasComment("Традиция заклинаний");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_classes");
|
||||
@@ -948,17 +987,20 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.Property<ConditionGroup?>("Group")
|
||||
.HasColumnType("condition_group")
|
||||
.HasColumnName("group")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Группа состояния");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_conditions");
|
||||
@@ -971,27 +1013,32 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<DeityCategory>("Category")
|
||||
.HasColumnType("deity_category")
|
||||
.HasColumnName("category")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Тип божества");
|
||||
|
||||
b.Property<DeityFonts>("Fonts")
|
||||
.HasColumnType("deity_fonts")
|
||||
.HasColumnName("fonts")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Тип божественной силы");
|
||||
|
||||
b.Property<DeitySanctification>("Sanctification")
|
||||
.HasColumnType("deity_sanctification")
|
||||
.HasColumnName("sanctification")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Тип освящения");
|
||||
|
||||
b.Property<bool>("SanctificationMust")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("sanctification_must")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Обязательное освящение");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_deities");
|
||||
@@ -1126,22 +1173,26 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int?>("Actions")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Количество действий");
|
||||
|
||||
b.Property<ActionCategory>("Category")
|
||||
.HasColumnType("action_category")
|
||||
b.Property<FeatCategory>("Category")
|
||||
.HasColumnType("feat_category")
|
||||
.HasColumnName("category")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Категория способности");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(10);
|
||||
.HasColumnOrder(10)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.Property<bool>("IsFreeAction")
|
||||
.HasColumnType("boolean")
|
||||
@@ -1161,7 +1212,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("level")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Уровень способности");
|
||||
|
||||
b.Property<int?>("MaxActions")
|
||||
.HasColumnType("integer")
|
||||
@@ -1210,12 +1262,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int?>("AncestryId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ancestry_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор родословной");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_heritages");
|
||||
@@ -1229,12 +1283,10 @@ namespace Pf2eModel.Migrations
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Language", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
@@ -1254,7 +1306,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int>("CastTime")
|
||||
.HasColumnType("integer")
|
||||
@@ -1265,7 +1318,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<string>("Cost")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("cost")
|
||||
.HasColumnOrder(14);
|
||||
.HasColumnOrder(14)
|
||||
.HasComment("Стоимость ритуала");
|
||||
|
||||
b.Property<int>("Duration")
|
||||
.HasColumnType("integer")
|
||||
@@ -1273,61 +1327,72 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Время действия эффекта ритуала в секундах");
|
||||
|
||||
b.PrimitiveCollection<int[]>("Elements")
|
||||
b.PrimitiveCollection<ElementEnum[]>("Elements")
|
||||
.IsRequired()
|
||||
.HasColumnType("integer[]")
|
||||
.HasColumnType("element_enum[]")
|
||||
.HasColumnName("elements")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Элементы ритуала");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("level")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Уровень ритуала");
|
||||
|
||||
b.Property<TrainingRank>("PrimaryCheckRank")
|
||||
.HasColumnType("training_rank")
|
||||
.HasColumnName("primary_check_rank")
|
||||
.HasColumnOrder(7);
|
||||
.HasColumnOrder(7)
|
||||
.HasComment("Ранг основной проверки");
|
||||
|
||||
b.Property<string>("PrimaryCheckSuffix")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("primary_check_suffix")
|
||||
.HasColumnOrder(8);
|
||||
.HasColumnOrder(8)
|
||||
.HasComment("Дополнительная информация об основной проверки");
|
||||
|
||||
b.Property<int>("Range")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("range")
|
||||
.HasColumnOrder(6);
|
||||
.HasColumnOrder(6)
|
||||
.HasComment("Дальнность ритуала");
|
||||
|
||||
b.Property<string>("RangeString")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("range_string")
|
||||
.HasColumnOrder(12);
|
||||
.HasColumnOrder(12)
|
||||
.HasComment("Дальность ритуала");
|
||||
|
||||
b.Property<string>("Requirement")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("requirement")
|
||||
.HasColumnOrder(15);
|
||||
.HasColumnOrder(15)
|
||||
.HasComment("Требования к ритуалу");
|
||||
|
||||
b.Property<int>("SecondaryCasters")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("secondary_casters")
|
||||
.HasColumnOrder(9);
|
||||
.HasColumnOrder(9)
|
||||
.HasComment("Количество дополнительных заклинателей");
|
||||
|
||||
b.Property<int>("SecondaryCastersMax")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("secondary_casters_max")
|
||||
.HasColumnOrder(10);
|
||||
.HasColumnOrder(10)
|
||||
.HasComment("Максимальное количество дополнительных заклинателей");
|
||||
|
||||
b.Property<string>("SecondaryCastersSuffix")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("secondary_casters_suffix")
|
||||
.HasColumnOrder(11);
|
||||
.HasColumnOrder(11)
|
||||
.HasComment("Дополнительная информация о дополнительных заклинателях");
|
||||
|
||||
b.Property<string>("Target")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("target")
|
||||
.HasColumnOrder(13);
|
||||
.HasColumnOrder(13)
|
||||
.HasComment("Цель ритуала");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_rituals");
|
||||
@@ -1411,7 +1476,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.PrimitiveCollection<string[]>("Breadcrumbs")
|
||||
.IsRequired()
|
||||
@@ -1421,12 +1487,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Order")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("order")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Порядок отображения");
|
||||
|
||||
b.Property<int?>("ParentId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("parent_id")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Родительского правило");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_rules");
|
||||
@@ -1442,34 +1510,40 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<ActionEnum>("Actions")
|
||||
.HasColumnType("action_enum")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Количество действий");
|
||||
|
||||
b.Property<string>("Cost")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("cost")
|
||||
.HasColumnOrder(11);
|
||||
.HasColumnOrder(11)
|
||||
.HasComment("Стоимость заклинания");
|
||||
|
||||
b.Property<int?>("Duration")
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("duration")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Время длительности заклинания");
|
||||
|
||||
b.PrimitiveCollection<int[]>("Elements")
|
||||
b.PrimitiveCollection<ElementEnum[]>("Elements")
|
||||
.IsRequired()
|
||||
.HasColumnType("integer[]")
|
||||
.HasColumnType("element_enum[]")
|
||||
.HasColumnName("elements")
|
||||
.HasColumnOrder(8);
|
||||
.HasColumnOrder(8)
|
||||
.HasComment("Элементы заклинания");
|
||||
|
||||
b.Property<bool>("IsFocus")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_focus")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Фокус?");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
@@ -1479,28 +1553,33 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Range")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("range")
|
||||
.HasColumnOrder(6);
|
||||
.HasColumnOrder(6)
|
||||
.HasComment("Дальность заклинания");
|
||||
|
||||
b.Property<string>("Requirement")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("requirement")
|
||||
.HasColumnOrder(12);
|
||||
.HasColumnOrder(12)
|
||||
.HasComment("Требования к заклинанию");
|
||||
|
||||
b.Property<string>("Target")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("target")
|
||||
.HasColumnOrder(10);
|
||||
.HasColumnOrder(10)
|
||||
.HasComment("Цель заклинания");
|
||||
|
||||
b.PrimitiveCollection<SpellTradition[]>("Traditions")
|
||||
.IsRequired()
|
||||
.HasColumnType("spell_tradition[]")
|
||||
.HasColumnName("traditions")
|
||||
.HasColumnOrder(7);
|
||||
.HasColumnOrder(7)
|
||||
.HasComment("Традиции заклинания");
|
||||
|
||||
b.Property<string>("Trigger")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("trigger")
|
||||
.HasColumnOrder(9);
|
||||
.HasColumnOrder(9)
|
||||
.HasComment("Триггер заклинания");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_spells");
|
||||
@@ -1655,13 +1734,15 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<string>("Additional")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("additional")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.IsRequired()
|
||||
@@ -1672,7 +1753,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("GroupId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("group_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Группа подклассов");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_subclasses");
|
||||
@@ -1688,12 +1770,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int?>("ClassId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("class_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор класса");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_subclass_groups");
|
||||
@@ -1709,12 +1793,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<TraitType>("Type")
|
||||
.HasColumnType("trait_type")
|
||||
.HasColumnName("type")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Тип признака");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_traits");
|
||||
+121
-123
@@ -14,28 +14,28 @@ namespace Pf2eModel.Migrations
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterDatabase()
|
||||
.Annotation("Npgsql:Enum:action_category", "unknown,archetype,class-feature,class-feat,offensive,defensive,interaction,familiar,army_tactic,army_war_action,kingdom_activity,kingdom_feat,kingdom_feature")
|
||||
.Annotation("Npgsql:Enum:action_enum", "unknown,1,2,3,reaction,free,passive,other,1-3,1-2,2-3,2/2 rounds,reaction/1,reaction/2,reaction/3,free/1,1 minute,5 minutes,10 minutes,30 minutes,1 hour")
|
||||
.Annotation("Npgsql:Enum:ancestry_vision", "normal,low-light-vision,dark-vision")
|
||||
.Annotation("Npgsql:Enum:attribute_values", "free,str,dex,con,int,wis,cha")
|
||||
.Annotation("Npgsql:Enum:class_progression_type", "entity,ancestry_feat,class_feat,general_feat,skill_feat,skill_increase")
|
||||
.Annotation("Npgsql:Enum:condition_group", "unknown,senses,abilities,death,attitudes,detection")
|
||||
.Annotation("Npgsql:Enum:deity_category", "deity,pantheon,covenant,philosophy")
|
||||
.Annotation("Npgsql:Enum:deity_fonts", "none,heal,harm,any")
|
||||
.Annotation("Npgsql:Enum:deity_sanctification", "holy,unholy,any")
|
||||
.Annotation("Npgsql:Enum:entity_rarity", "common,uncommon,rare,unique")
|
||||
.Annotation("Npgsql:Enum:entity_type", "unknown,trait,action,ancestry,archetype,background,backpack,campaign_feature,class,subclass_group,subclass,condition,deity,feat,heritage,spell,ritual,language,rule")
|
||||
.Annotation("Npgsql:Enum:feat_action_type", "passive,action,reaction,free")
|
||||
.Annotation("Npgsql:Enum:feat_category", "uncategorized,ancestry-feature,class-feature,calling,class,skill,general,ancestry,bonus,deityboon,curse,pfsboon,campaign-feature")
|
||||
.Annotation("Npgsql:Enum:locale_type", "english,legacy_english,russian,legacy,hobby,other")
|
||||
.Annotation("Npgsql:Enum:size", "tiny,small,medium,large")
|
||||
.Annotation("Npgsql:Enum:source_category", "rulebook,adventure-path,lost-omens,adventures,comics,blog-posts,society")
|
||||
.Annotation("Npgsql:Enum:spell_area_type", "burst,emanation,cone,line,square,cube,cylinder,varies,cuboid,circle,other")
|
||||
.Annotation("Npgsql:Enum:spell_damage_category", "persistent,splash")
|
||||
.Annotation("Npgsql:Enum:spell_damage_kinds", "damage,healing,any")
|
||||
.Annotation("Npgsql:Enum:spell_tradition", "none,divine,occult,arcane,primal,elemental,all")
|
||||
.Annotation("Npgsql:Enum:training_rank", "untrained,trained,expert,master,legendary,mythic")
|
||||
.Annotation("Npgsql:Enum:trait_type", "regular,class,tradition");
|
||||
.Annotation("Npgsql:Enum:action_category", "archetype,army_tactic,army_war_action,class-feat,class-feature,defensive,familiar,interaction,kingdom_activity,kingdom_feat,kingdom_feature,offensive,unknown")
|
||||
.Annotation("Npgsql:Enum:action_enum", "1,1 hour,1 minute,1-2,1-3,10 minutes,2,2-3,2/2 rounds,3,30 minutes,5 minutes,free,free/1,other,passive,reaction,reaction/1,reaction/2,reaction/3,unknown")
|
||||
.Annotation("Npgsql:Enum:attribute_values", "cha,con,dex,free,int,str,wis")
|
||||
.Annotation("Npgsql:Enum:class_progression_type", "ancestry_feat,attribute_increase,class_feat,entity,general_feat,skill_feat,skill_increase")
|
||||
.Annotation("Npgsql:Enum:condition_group", "abilities,attitudes,death,detection,senses,unknown")
|
||||
.Annotation("Npgsql:Enum:deity_category", "covenant,deity,pantheon,philosophy")
|
||||
.Annotation("Npgsql:Enum:deity_fonts", "any,harm,heal,none")
|
||||
.Annotation("Npgsql:Enum:deity_sanctification", "any,holy,unholy")
|
||||
.Annotation("Npgsql:Enum:element_enum", "air,earth,fire,metal,universal,water,wood")
|
||||
.Annotation("Npgsql:Enum:entity_rarity", "common,rare,uncommon,unique")
|
||||
.Annotation("Npgsql:Enum:entity_type", "action,ancestry,archetype,background,backpack,campaign_feature,class,condition,deity,feat,heritage,language,ritual,rule,spell,subclass,subclass_group,trait,unknown")
|
||||
.Annotation("Npgsql:Enum:feat_category", "ancestry,ancestry-feature,archetype,bonus,calling,campaign-feature,class,class-feature,curse,deityboon,general,pfsboon,skill,uncategorized")
|
||||
.Annotation("Npgsql:Enum:locale_type", "english,hobby,legacy,legacy_english,other,russian")
|
||||
.Annotation("Npgsql:Enum:size_enum", "huge,large,medium,small,tiny")
|
||||
.Annotation("Npgsql:Enum:source_category", "adventure-path,adventures,blog-posts,comics,lost-omens,rulebook,society")
|
||||
.Annotation("Npgsql:Enum:spell_area_type", "burst,circle,cone,cube,cuboid,cylinder,emanation,line,other,square,varies")
|
||||
.Annotation("Npgsql:Enum:spell_damage_category", "normal,persistent,splash")
|
||||
.Annotation("Npgsql:Enum:spell_damage_kinds", "any,damage,healing")
|
||||
.Annotation("Npgsql:Enum:spell_tradition", "all,arcane,divine,elemental,none,occult,primal")
|
||||
.Annotation("Npgsql:Enum:training_rank", "expert,legendary,master,mythic,trained,untrained")
|
||||
.Annotation("Npgsql:Enum:trait_type", "class,regular,tradition")
|
||||
.Annotation("Npgsql:Enum:vision_enum", "dark-vision,low-light-vision,normal");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "entities",
|
||||
@@ -44,13 +44,13 @@ namespace Pf2eModel.Migrations
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
name = table.Column<string>(type: "jsonb", nullable: false, comment: "Отображаемое имя"),
|
||||
type = table.Column<EntityType>(type: "entity_type", nullable: false, comment: "Тип объекта"),
|
||||
type = table.Column<EntityType>(type: "entity_type", nullable: false, comment: "Тип сущности"),
|
||||
slug = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Часть имени в URL"),
|
||||
img = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Изображение объекта"),
|
||||
description = table.Column<string>(type: "text", nullable: false, comment: "Текстовое описание объекта"),
|
||||
rarity = table.Column<EntityRarity>(type: "entity_rarity", nullable: false),
|
||||
is_translated = table.Column<bool>(type: "boolean", nullable: true, comment: "Флаг, указывающий, что у объекта существует перевод"),
|
||||
is_checked = table.Column<bool>(type: "boolean", nullable: true, comment: "Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи")
|
||||
description = table.Column<string>(type: "text", nullable: false, comment: "Текстовое описание сущности"),
|
||||
rarity = table.Column<EntityRarity>(type: "entity_rarity", nullable: false, comment: "Редкость сущности"),
|
||||
is_translated = table.Column<bool>(type: "boolean", nullable: true, comment: "Флаг, указывающий, что у сущности существует перевод"),
|
||||
is_checked = table.Column<bool>(type: "boolean", nullable: true, comment: "Флаг, указывающий, что сущность был проверен и не требует автоматической перезаписи")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -61,11 +61,11 @@ namespace Pf2eModel.Migrations
|
||||
name: "external_targets",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
icon = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
prefix = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false)
|
||||
name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Отображаемое имя"),
|
||||
icon = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Иконка цели"),
|
||||
prefix = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Префикс для URL-адреса внешней ссылки")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -76,11 +76,11 @@ namespace Pf2eModel.Migrations
|
||||
name: "frequencies",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
max = table.Column<int>(type: "integer", nullable: false),
|
||||
per = table.Column<int>(type: "integer", nullable: false),
|
||||
value = table.Column<int>(type: "integer", nullable: true)
|
||||
max = table.Column<int>(type: "integer", nullable: false, comment: "Максимальная продолжительсность"),
|
||||
per = table.Column<int>(type: "integer", nullable: false, comment: "Частота использования"),
|
||||
value = table.Column<int>(type: "integer", nullable: true, comment: "Значение использования")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -93,8 +93,8 @@ namespace Pf2eModel.Migrations
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
name = table.Column<string>(type: "jsonb", nullable: false),
|
||||
slug = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false)
|
||||
name = table.Column<string>(type: "jsonb", nullable: false, comment: "Отображаемое имя"),
|
||||
slug = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Часть имени в URL")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -105,11 +105,11 @@ namespace Pf2eModel.Migrations
|
||||
name: "sources",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
category = table.Column<SourceCategory>(type: "source_category", nullable: false),
|
||||
release_date = table.Column<DateOnly>(type: "date", nullable: true)
|
||||
name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Отображаемое имя"),
|
||||
category = table.Column<SourceCategory>(type: "source_category", nullable: false, comment: "Категория источника"),
|
||||
release_date = table.Column<DateOnly>(type: "date", nullable: true, comment: "Дата выхода источника")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -120,10 +120,10 @@ namespace Pf2eModel.Migrations
|
||||
name: "trainings",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
name = table.Column<string>(type: "jsonb", nullable: false),
|
||||
type = table.Column<int>(type: "integer", nullable: false)
|
||||
name = table.Column<string>(type: "jsonb", nullable: false, comment: "Название способности"),
|
||||
type = table.Column<int>(type: "integer", nullable: false, comment: "Тип способности")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -134,9 +134,9 @@ namespace Pf2eModel.Migrations
|
||||
name: "actions",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
actions = table.Column<ActionEnum>(type: "action_enum", nullable: false),
|
||||
extra = table.Column<string>(type: "text", nullable: true)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
actions = table.Column<ActionEnum>(type: "action_enum", nullable: false, comment: "Количество действий"),
|
||||
extra = table.Column<string>(type: "text", nullable: true, comment: "Дополнительная информация")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -153,11 +153,11 @@ namespace Pf2eModel.Migrations
|
||||
name: "ancestries",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
size = table.Column<Size[]>(type: "size[]", nullable: false),
|
||||
hp = table.Column<int>(type: "integer", nullable: false),
|
||||
speed = table.Column<int>(type: "integer", nullable: false),
|
||||
vision = table.Column<AncestryVision>(type: "ancestry_vision", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
size = table.Column<SizeEnum[]>(type: "size_enum[]", nullable: false, comment: "Размеры родословной"),
|
||||
hp = table.Column<int>(type: "integer", nullable: false, comment: "Количество очков здоровья"),
|
||||
speed = table.Column<int>(type: "integer", nullable: false, comment: "Скорость передвижения"),
|
||||
vision_enum = table.Column<VisionEnum>(type: "vision_enum", nullable: false, comment: "Тип зрения")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -174,7 +174,7 @@ namespace Pf2eModel.Migrations
|
||||
name: "backgrounds",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -191,12 +191,11 @@ namespace Pf2eModel.Migrations
|
||||
name: "classes",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
hp = table.Column<int>(type: "integer", nullable: false),
|
||||
perception = table.Column<int>(type: "integer", nullable: false),
|
||||
spellcasting = table.Column<bool>(type: "boolean", nullable: false),
|
||||
tradition = table.Column<SpellTradition>(type: "spell_tradition", nullable: false),
|
||||
additional_trained_skills = table.Column<int>(type: "integer", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
hp = table.Column<int>(type: "integer", nullable: false, comment: "Количество очков здоровья"),
|
||||
spellcasting = table.Column<bool>(type: "boolean", nullable: false, comment: "Заклинатель?"),
|
||||
tradition = table.Column<SpellTradition>(type: "spell_tradition", nullable: true, comment: "Традиция заклинаний"),
|
||||
additional_trained_skills = table.Column<int>(type: "integer", nullable: false, comment: "Дополнительные навыки")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -213,9 +212,9 @@ namespace Pf2eModel.Migrations
|
||||
name: "conditions",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
group = table.Column<ConditionGroup>(type: "condition_group", nullable: true),
|
||||
extra = table.Column<string>(type: "text", nullable: true)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
group = table.Column<ConditionGroup>(type: "condition_group", nullable: true, comment: "Группа состояния"),
|
||||
extra = table.Column<string>(type: "text", nullable: true, comment: "Дополнительная информация")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -232,11 +231,11 @@ namespace Pf2eModel.Migrations
|
||||
name: "deities",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
category = table.Column<DeityCategory>(type: "deity_category", nullable: false),
|
||||
fonts = table.Column<DeityFonts>(type: "deity_fonts", nullable: false),
|
||||
sanctification = table.Column<DeitySanctification>(type: "deity_sanctification", nullable: false),
|
||||
sanctification_must = table.Column<bool>(type: "boolean", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
category = table.Column<DeityCategory>(type: "deity_category", nullable: false, comment: "Тип божества"),
|
||||
fonts = table.Column<DeityFonts>(type: "deity_fonts", nullable: false, comment: "Тип божественной силы"),
|
||||
sanctification = table.Column<DeitySanctification>(type: "deity_sanctification", nullable: false, comment: "Тип освящения"),
|
||||
sanctification_must = table.Column<bool>(type: "boolean", nullable: false, comment: "Обязательное освящение")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -253,15 +252,15 @@ namespace Pf2eModel.Migrations
|
||||
name: "feats",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
category = table.Column<ActionCategory>(type: "action_category", nullable: false),
|
||||
level = table.Column<int>(type: "integer", nullable: false),
|
||||
actions = table.Column<int>(type: "integer", nullable: true),
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
category = table.Column<FeatCategory>(type: "feat_category", nullable: false, comment: "Категория способности"),
|
||||
level = table.Column<int>(type: "integer", nullable: false, comment: "Уровень способности"),
|
||||
actions = table.Column<int>(type: "integer", nullable: true, comment: "Количество действий"),
|
||||
max_actions = table.Column<int>(type: "integer", nullable: true),
|
||||
is_reaction = table.Column<bool>(type: "boolean", nullable: false),
|
||||
is_free_action = table.Column<bool>(type: "boolean", nullable: false),
|
||||
is_passive = table.Column<bool>(type: "boolean", nullable: false),
|
||||
extra = table.Column<string>(type: "text", nullable: true)
|
||||
extra = table.Column<string>(type: "text", nullable: true, comment: "Дополнительная информация")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -278,8 +277,7 @@ namespace Pf2eModel.Migrations
|
||||
name: "languages",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
entity_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
@@ -297,21 +295,21 @@ namespace Pf2eModel.Migrations
|
||||
name: "rituals",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
level = table.Column<int>(type: "integer", nullable: false),
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
level = table.Column<int>(type: "integer", nullable: false, comment: "Уровень ритуала"),
|
||||
cast_time = table.Column<int>(type: "integer", nullable: false, comment: "Продолжительность ритуала в секундах"),
|
||||
duration = table.Column<int>(type: "integer", nullable: false, comment: "Время действия эффекта ритуала в секундах"),
|
||||
elements = table.Column<int[]>(type: "integer[]", nullable: false),
|
||||
range = table.Column<int>(type: "integer", nullable: false),
|
||||
primary_check_rank = table.Column<TrainingRank>(type: "training_rank", nullable: false),
|
||||
primary_check_suffix = table.Column<string>(type: "jsonb", nullable: true),
|
||||
secondary_casters = table.Column<int>(type: "integer", nullable: false),
|
||||
secondary_casters_max = table.Column<int>(type: "integer", nullable: false),
|
||||
secondary_casters_suffix = table.Column<string>(type: "jsonb", nullable: true),
|
||||
range_string = table.Column<string>(type: "jsonb", nullable: true),
|
||||
target = table.Column<string>(type: "jsonb", nullable: true),
|
||||
cost = table.Column<string>(type: "jsonb", nullable: true),
|
||||
requirement = table.Column<string>(type: "jsonb", nullable: true)
|
||||
elements = table.Column<ElementEnum[]>(type: "element_enum[]", nullable: false, comment: "Элементы ритуала"),
|
||||
range = table.Column<int>(type: "integer", nullable: false, comment: "Дальнность ритуала"),
|
||||
primary_check_rank = table.Column<TrainingRank>(type: "training_rank", nullable: false, comment: "Ранг основной проверки"),
|
||||
primary_check_suffix = table.Column<string>(type: "jsonb", nullable: true, comment: "Дополнительная информация об основной проверки"),
|
||||
secondary_casters = table.Column<int>(type: "integer", nullable: false, comment: "Количество дополнительных заклинателей"),
|
||||
secondary_casters_max = table.Column<int>(type: "integer", nullable: false, comment: "Максимальное количество дополнительных заклинателей"),
|
||||
secondary_casters_suffix = table.Column<string>(type: "jsonb", nullable: true, comment: "Дополнительная информация о дополнительных заклинателях"),
|
||||
range_string = table.Column<string>(type: "jsonb", nullable: true, comment: "Дальность ритуала"),
|
||||
target = table.Column<string>(type: "jsonb", nullable: true, comment: "Цель ритуала"),
|
||||
cost = table.Column<string>(type: "jsonb", nullable: true, comment: "Стоимость ритуала"),
|
||||
requirement = table.Column<string>(type: "jsonb", nullable: true, comment: "Требования к ритуалу")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -328,9 +326,9 @@ namespace Pf2eModel.Migrations
|
||||
name: "rules",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
order = table.Column<int>(type: "integer", nullable: false),
|
||||
parent_id = table.Column<int>(type: "integer", nullable: true),
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
order = table.Column<int>(type: "integer", nullable: false, comment: "Порядок отображения"),
|
||||
parent_id = table.Column<int>(type: "integer", nullable: true, comment: "Родительского правило"),
|
||||
breadcrumbs = table.Column<string[]>(type: "text[]", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
@@ -353,18 +351,18 @@ namespace Pf2eModel.Migrations
|
||||
name: "spells",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
level = table.Column<int>(type: "integer", nullable: false),
|
||||
is_focus = table.Column<bool>(type: "boolean", nullable: false),
|
||||
actions = table.Column<ActionEnum>(type: "action_enum", nullable: false),
|
||||
duration = table.Column<int>(type: "integer", maxLength: 255, nullable: true),
|
||||
range = table.Column<int>(type: "integer", nullable: false),
|
||||
traditions = table.Column<SpellTradition[]>(type: "spell_tradition[]", nullable: false),
|
||||
elements = table.Column<int[]>(type: "integer[]", nullable: false),
|
||||
trigger = table.Column<string>(type: "jsonb", nullable: true),
|
||||
target = table.Column<string>(type: "jsonb", nullable: true),
|
||||
cost = table.Column<string>(type: "jsonb", nullable: true),
|
||||
requirement = table.Column<string>(type: "jsonb", nullable: true)
|
||||
is_focus = table.Column<bool>(type: "boolean", nullable: false, comment: "Фокус?"),
|
||||
actions = table.Column<ActionEnum>(type: "action_enum", nullable: false, comment: "Количество действий"),
|
||||
duration = table.Column<int>(type: "integer", maxLength: 255, nullable: true, comment: "Время длительности заклинания"),
|
||||
range = table.Column<int>(type: "integer", nullable: false, comment: "Дальность заклинания"),
|
||||
traditions = table.Column<SpellTradition[]>(type: "spell_tradition[]", nullable: false, comment: "Традиции заклинания"),
|
||||
elements = table.Column<ElementEnum[]>(type: "element_enum[]", nullable: false, comment: "Элементы заклинания"),
|
||||
trigger = table.Column<string>(type: "jsonb", nullable: true, comment: "Триггер заклинания"),
|
||||
target = table.Column<string>(type: "jsonb", nullable: true, comment: "Цель заклинания"),
|
||||
cost = table.Column<string>(type: "jsonb", nullable: true, comment: "Стоимость заклинания"),
|
||||
requirement = table.Column<string>(type: "jsonb", nullable: true, comment: "Требования к заклинанию")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -381,8 +379,8 @@ namespace Pf2eModel.Migrations
|
||||
name: "traits",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
type = table.Column<TraitType>(type: "trait_type", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
type = table.Column<TraitType>(type: "trait_type", nullable: false, comment: "Тип признака")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -399,10 +397,10 @@ namespace Pf2eModel.Migrations
|
||||
name: "entity_externals",
|
||||
columns: table => new
|
||||
{
|
||||
entity_id = table.Column<int>(type: "integer", nullable: false),
|
||||
target_id = table.Column<int>(type: "integer", nullable: false),
|
||||
entity_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор сущности"),
|
||||
target_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор цели"),
|
||||
suffix = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Часть URL до объекта. Для источников Foundry - полный UUID объекта"),
|
||||
md5 = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: false, comment: "Контроль версии объекта")
|
||||
md5 = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: false, comment: "Контрольная сумма объекта")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -449,10 +447,10 @@ namespace Pf2eModel.Migrations
|
||||
name: "keyword_aliases",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
keyword_id = table.Column<int>(type: "integer", nullable: false),
|
||||
value = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false)
|
||||
keyword_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор ключевого слова"),
|
||||
value = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Синоним")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -469,10 +467,10 @@ namespace Pf2eModel.Migrations
|
||||
name: "entity_sources",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
entity_id = table.Column<int>(type: "integer", nullable: false),
|
||||
source_id = table.Column<int>(type: "integer", nullable: false),
|
||||
entity_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор сущности"),
|
||||
source_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор источника"),
|
||||
suffix = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Номер страницы, эррата и т.д."),
|
||||
is_remaster = table.Column<bool>(type: "boolean", nullable: false, comment: "Флаг, указывающий, что объект является частью ремастера")
|
||||
},
|
||||
@@ -543,8 +541,8 @@ namespace Pf2eModel.Migrations
|
||||
name: "heritages",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
ancestry_id = table.Column<int>(type: "integer", nullable: true)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
ancestry_id = table.Column<int>(type: "integer", nullable: true, comment: "Идентификатор родословной")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -713,8 +711,8 @@ namespace Pf2eModel.Migrations
|
||||
name: "subclass_groups",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
class_id = table.Column<int>(type: "integer", nullable: true)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
class_id = table.Column<int>(type: "integer", nullable: true, comment: "Идентификатор класса")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -820,10 +818,10 @@ namespace Pf2eModel.Migrations
|
||||
name: "archetypes",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
level = table.Column<int>(type: "integer", nullable: false),
|
||||
dedication_feat_id = table.Column<int>(type: "integer", nullable: true),
|
||||
extra = table.Column<string>(type: "text", nullable: true)
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
level = table.Column<int>(type: "integer", nullable: false, comment: "Уровень"),
|
||||
dedication_feat_id = table.Column<int>(type: "integer", nullable: true, comment: "ID посвящения"),
|
||||
extra = table.Column<string>(type: "text", nullable: true, comment: "Дополнительная информация")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -1059,9 +1057,9 @@ namespace Pf2eModel.Migrations
|
||||
name: "subclasses",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
group_id = table.Column<int>(type: "integer", nullable: false),
|
||||
additional = table.Column<string>(type: "jsonb", nullable: false),
|
||||
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
|
||||
group_id = table.Column<int>(type: "integer", nullable: false, comment: "Группа подклассов"),
|
||||
additional = table.Column<string>(type: "jsonb", nullable: false, comment: "Дополнительная информация"),
|
||||
extra = table.Column<string>(type: "text", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
@@ -21,28 +21,28 @@ namespace Pf2eModel.Migrations
|
||||
.HasAnnotation("ProductVersion", "9.0.4")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "archetype", "class-feature", "class-feat", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_enum", new[] { "unknown", "1", "2", "3", "reaction", "free", "passive", "other", "1-3", "1-2", "2-3", "2/2 rounds", "reaction/1", "reaction/2", "reaction/3", "free/1", "1 minute", "5 minutes", "10 minutes", "30 minutes", "1 hour" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "dark-vision" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "free", "str", "dex", "con", "int", "wis", "cha" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "entity", "ancestry_feat", "class_feat", "general_feat", "skill_feat", "skill_increase" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "unknown", "senses", "abilities", "death", "attitudes", "detection" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "deity", "pantheon", "covenant", "philosophy" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "none", "heal", "harm", "any" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "holy", "unholy", "any" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "subclass_group", "subclass", "condition", "deity", "feat", "heritage", "spell", "ritual", "language", "rule" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "uncategorized", "ancestry-feature", "class-feature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign-feature" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "locale_type", new[] { "english", "legacy_english", "russian", "legacy", "hobby", "other" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens", "adventures", "comics", "blog-posts", "society" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder", "varies", "cuboid", "circle", "other" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "none", "divine", "occult", "arcane", "primal", "elemental", "all" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "untrained", "trained", "expert", "master", "legendary", "mythic" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "class", "tradition" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "archetype", "army_tactic", "army_war_action", "class-feat", "class-feature", "defensive", "familiar", "interaction", "kingdom_activity", "kingdom_feat", "kingdom_feature", "offensive", "unknown" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_enum", new[] { "1", "1 hour", "1 minute", "1-2", "1-3", "10 minutes", "2", "2-3", "2/2 rounds", "3", "30 minutes", "5 minutes", "free", "free/1", "other", "passive", "reaction", "reaction/1", "reaction/2", "reaction/3", "unknown" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "cha", "con", "dex", "free", "int", "str", "wis" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "ancestry_feat", "attribute_increase", "class_feat", "entity", "general_feat", "skill_feat", "skill_increase" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "abilities", "attitudes", "death", "detection", "senses", "unknown" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "covenant", "deity", "pantheon", "philosophy" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "any", "harm", "heal", "none" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "any", "holy", "unholy" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_enum", new[] { "air", "earth", "fire", "metal", "universal", "water", "wood" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "rare", "uncommon", "unique" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestry", "ancestry-feature", "archetype", "bonus", "calling", "campaign-feature", "class", "class-feature", "curse", "deityboon", "general", "pfsboon", "skill", "uncategorized" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "locale_type", new[] { "english", "hobby", "legacy", "legacy_english", "other", "russian" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size_enum", new[] { "huge", "large", "medium", "small", "tiny" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "adventure-path", "adventures", "blog-posts", "comics", "lost-omens", "rulebook", "society" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "circle", "cone", "cube", "cuboid", "cylinder", "emanation", "line", "other", "square", "varies" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "normal", "persistent", "splash" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "any", "damage", "healing" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "all", "arcane", "divine", "elemental", "none", "occult", "primal" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "expert", "legendary", "master", "mythic", "trained", "untrained" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "class", "regular", "tradition" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "vision_enum", new[] { "dark-vision", "low-light-vision", "normal" });
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("DeityTraining", b =>
|
||||
@@ -117,7 +117,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("description")
|
||||
.HasColumnOrder(6)
|
||||
.HasComment("Текстовое описание объекта");
|
||||
.HasComment("Текстовое описание сущности");
|
||||
|
||||
b.Property<string>("Img")
|
||||
.IsRequired()
|
||||
@@ -131,13 +131,13 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_checked")
|
||||
.HasColumnOrder(9)
|
||||
.HasComment("Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи");
|
||||
.HasComment("Флаг, указывающий, что сущность был проверен и не требует автоматической перезаписи");
|
||||
|
||||
b.Property<bool?>("IsTranslated")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_translated")
|
||||
.HasColumnOrder(8)
|
||||
.HasComment("Флаг, указывающий, что у объекта существует перевод");
|
||||
.HasComment("Флаг, указывающий, что у сущности существует перевод");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
@@ -149,7 +149,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<EntityRarity>("Rarity")
|
||||
.HasColumnType("entity_rarity")
|
||||
.HasColumnName("rarity")
|
||||
.HasColumnOrder(7);
|
||||
.HasColumnOrder(7)
|
||||
.HasComment("Редкость сущности");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.IsRequired()
|
||||
@@ -163,7 +164,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnType("entity_type")
|
||||
.HasColumnName("type")
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Тип объекта");
|
||||
.HasComment("Тип сущности");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_entities");
|
||||
@@ -185,14 +186,16 @@ namespace Pf2eModel.Migrations
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Отображаемое имя");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("slug")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Часть имени в URL");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_keywords");
|
||||
@@ -206,21 +209,24 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("KeywordId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("keyword_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор ключевого слова");
|
||||
|
||||
b.Property<string>("Value")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("value")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Синоним");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_keyword_aliases");
|
||||
@@ -237,14 +243,16 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(0);
|
||||
.HasColumnOrder(0)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("entity_id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор сущности");
|
||||
|
||||
b.Property<bool>("IsRemaster")
|
||||
.HasColumnType("boolean")
|
||||
@@ -255,7 +263,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("SourceId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("source_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор источника");
|
||||
|
||||
b.Property<string>("Suffix")
|
||||
.IsRequired()
|
||||
@@ -283,26 +292,30 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<SourceCategory>("Category")
|
||||
.HasColumnType("source_category")
|
||||
.HasColumnName("category")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Категория источника");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Отображаемое имя");
|
||||
|
||||
b.Property<DateOnly?>("ReleaseDate")
|
||||
.HasColumnType("date")
|
||||
.HasColumnName("release_date")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Дата выхода источника");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_sources");
|
||||
@@ -315,12 +328,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("entity_id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор сущности");
|
||||
|
||||
b.Property<int>("TargetId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("target_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор цели");
|
||||
|
||||
b.Property<string>("Md5")
|
||||
.IsRequired()
|
||||
@@ -328,7 +343,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("md5")
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Контроль версии объекта");
|
||||
.HasComment("Контрольная сумма объекта");
|
||||
|
||||
b.Property<string>("Suffix")
|
||||
.IsRequired()
|
||||
@@ -353,7 +368,8 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
@@ -362,21 +378,24 @@ namespace Pf2eModel.Migrations
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("icon")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Иконка цели");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Отображаемое имя");
|
||||
|
||||
b.Property<string>("Prefix")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("prefix")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Префикс для URL-адреса внешней ссылки");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_external_targets");
|
||||
@@ -390,24 +409,28 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("Max")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("max")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Максимальная продолжительсность");
|
||||
|
||||
b.Property<int>("Per")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("per")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Частота использования");
|
||||
|
||||
b.Property<int?>("Value")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("value")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Значение использования");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_frequencies");
|
||||
@@ -421,7 +444,8 @@ namespace Pf2eModel.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
@@ -429,12 +453,14 @@ namespace Pf2eModel.Migrations
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Название способности");
|
||||
|
||||
b.Property<int>("Type")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("type")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Тип способности");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_trainings");
|
||||
@@ -447,17 +473,20 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<ActionEnum>("Actions")
|
||||
.HasColumnType("action_enum")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Количество действий");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_actions");
|
||||
@@ -470,28 +499,33 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int>("Hp")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("hp")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Количество очков здоровья");
|
||||
|
||||
b.PrimitiveCollection<Size[]>("Size")
|
||||
b.PrimitiveCollection<SizeEnum[]>("Size")
|
||||
.IsRequired()
|
||||
.HasColumnType("size[]")
|
||||
.HasColumnType("size_enum[]")
|
||||
.HasColumnName("size")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Размеры родословной");
|
||||
|
||||
b.Property<int>("Speed")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("speed")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Скорость передвижения");
|
||||
|
||||
b.Property<AncestryVision>("Vision")
|
||||
.HasColumnType("ancestry_vision")
|
||||
.HasColumnName("vision")
|
||||
.HasColumnOrder(5);
|
||||
b.Property<VisionEnum>("VisionEnum")
|
||||
.HasColumnType("vision_enum")
|
||||
.HasColumnName("vision_enum")
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Тип зрения");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_ancestries");
|
||||
@@ -590,22 +624,26 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int?>("DedicationFeatId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("dedication_feat_id")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("ID посвящения");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("level")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Уровень");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_archetypes");
|
||||
@@ -641,7 +679,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_backgrounds");
|
||||
@@ -743,32 +782,32 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int>("AdditionalTrainedSkills")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("additional_trained_skills")
|
||||
.HasColumnOrder(7);
|
||||
.HasColumnOrder(7)
|
||||
.HasComment("Дополнительные навыки");
|
||||
|
||||
b.Property<int>("Hp")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("hp")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<int>("Perception")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("perception")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Количество очков здоровья");
|
||||
|
||||
b.Property<bool>("Spellcasting")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("spellcasting")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Заклинатель?");
|
||||
|
||||
b.Property<SpellTradition>("Tradition")
|
||||
b.Property<SpellTradition?>("Tradition")
|
||||
.HasColumnType("spell_tradition")
|
||||
.HasColumnName("tradition")
|
||||
.HasColumnOrder(6);
|
||||
.HasColumnOrder(6)
|
||||
.HasComment("Традиция заклинаний");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_classes");
|
||||
@@ -945,17 +984,20 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.Property<ConditionGroup?>("Group")
|
||||
.HasColumnType("condition_group")
|
||||
.HasColumnName("group")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Группа состояния");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_conditions");
|
||||
@@ -968,27 +1010,32 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<DeityCategory>("Category")
|
||||
.HasColumnType("deity_category")
|
||||
.HasColumnName("category")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Тип божества");
|
||||
|
||||
b.Property<DeityFonts>("Fonts")
|
||||
.HasColumnType("deity_fonts")
|
||||
.HasColumnName("fonts")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Тип божественной силы");
|
||||
|
||||
b.Property<DeitySanctification>("Sanctification")
|
||||
.HasColumnType("deity_sanctification")
|
||||
.HasColumnName("sanctification")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Тип освящения");
|
||||
|
||||
b.Property<bool>("SanctificationMust")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("sanctification_must")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Обязательное освящение");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_deities");
|
||||
@@ -1123,22 +1170,26 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int?>("Actions")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Количество действий");
|
||||
|
||||
b.Property<ActionCategory>("Category")
|
||||
.HasColumnType("action_category")
|
||||
b.Property<FeatCategory>("Category")
|
||||
.HasColumnType("feat_category")
|
||||
.HasColumnName("category")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Категория способности");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(10);
|
||||
.HasColumnOrder(10)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.Property<bool>("IsFreeAction")
|
||||
.HasColumnType("boolean")
|
||||
@@ -1158,7 +1209,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("level")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Уровень способности");
|
||||
|
||||
b.Property<int?>("MaxActions")
|
||||
.HasColumnType("integer")
|
||||
@@ -1207,12 +1259,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int?>("AncestryId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ancestry_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор родословной");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_heritages");
|
||||
@@ -1226,12 +1280,10 @@ namespace Pf2eModel.Migrations
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Language", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
@@ -1251,7 +1303,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int>("CastTime")
|
||||
.HasColumnType("integer")
|
||||
@@ -1262,7 +1315,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<string>("Cost")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("cost")
|
||||
.HasColumnOrder(14);
|
||||
.HasColumnOrder(14)
|
||||
.HasComment("Стоимость ритуала");
|
||||
|
||||
b.Property<int>("Duration")
|
||||
.HasColumnType("integer")
|
||||
@@ -1270,61 +1324,72 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Время действия эффекта ритуала в секундах");
|
||||
|
||||
b.PrimitiveCollection<int[]>("Elements")
|
||||
b.PrimitiveCollection<ElementEnum[]>("Elements")
|
||||
.IsRequired()
|
||||
.HasColumnType("integer[]")
|
||||
.HasColumnType("element_enum[]")
|
||||
.HasColumnName("elements")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Элементы ритуала");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("level")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Уровень ритуала");
|
||||
|
||||
b.Property<TrainingRank>("PrimaryCheckRank")
|
||||
.HasColumnType("training_rank")
|
||||
.HasColumnName("primary_check_rank")
|
||||
.HasColumnOrder(7);
|
||||
.HasColumnOrder(7)
|
||||
.HasComment("Ранг основной проверки");
|
||||
|
||||
b.Property<string>("PrimaryCheckSuffix")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("primary_check_suffix")
|
||||
.HasColumnOrder(8);
|
||||
.HasColumnOrder(8)
|
||||
.HasComment("Дополнительная информация об основной проверки");
|
||||
|
||||
b.Property<int>("Range")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("range")
|
||||
.HasColumnOrder(6);
|
||||
.HasColumnOrder(6)
|
||||
.HasComment("Дальнность ритуала");
|
||||
|
||||
b.Property<string>("RangeString")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("range_string")
|
||||
.HasColumnOrder(12);
|
||||
.HasColumnOrder(12)
|
||||
.HasComment("Дальность ритуала");
|
||||
|
||||
b.Property<string>("Requirement")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("requirement")
|
||||
.HasColumnOrder(15);
|
||||
.HasColumnOrder(15)
|
||||
.HasComment("Требования к ритуалу");
|
||||
|
||||
b.Property<int>("SecondaryCasters")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("secondary_casters")
|
||||
.HasColumnOrder(9);
|
||||
.HasColumnOrder(9)
|
||||
.HasComment("Количество дополнительных заклинателей");
|
||||
|
||||
b.Property<int>("SecondaryCastersMax")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("secondary_casters_max")
|
||||
.HasColumnOrder(10);
|
||||
.HasColumnOrder(10)
|
||||
.HasComment("Максимальное количество дополнительных заклинателей");
|
||||
|
||||
b.Property<string>("SecondaryCastersSuffix")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("secondary_casters_suffix")
|
||||
.HasColumnOrder(11);
|
||||
.HasColumnOrder(11)
|
||||
.HasComment("Дополнительная информация о дополнительных заклинателях");
|
||||
|
||||
b.Property<string>("Target")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("target")
|
||||
.HasColumnOrder(13);
|
||||
.HasColumnOrder(13)
|
||||
.HasComment("Цель ритуала");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_rituals");
|
||||
@@ -1408,7 +1473,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.PrimitiveCollection<string[]>("Breadcrumbs")
|
||||
.IsRequired()
|
||||
@@ -1418,12 +1484,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Order")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("order")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Порядок отображения");
|
||||
|
||||
b.Property<int?>("ParentId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("parent_id")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Родительского правило");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_rules");
|
||||
@@ -1439,34 +1507,40 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<ActionEnum>("Actions")
|
||||
.HasColumnType("action_enum")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Количество действий");
|
||||
|
||||
b.Property<string>("Cost")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("cost")
|
||||
.HasColumnOrder(11);
|
||||
.HasColumnOrder(11)
|
||||
.HasComment("Стоимость заклинания");
|
||||
|
||||
b.Property<int?>("Duration")
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("duration")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Время длительности заклинания");
|
||||
|
||||
b.PrimitiveCollection<int[]>("Elements")
|
||||
b.PrimitiveCollection<ElementEnum[]>("Elements")
|
||||
.IsRequired()
|
||||
.HasColumnType("integer[]")
|
||||
.HasColumnType("element_enum[]")
|
||||
.HasColumnName("elements")
|
||||
.HasColumnOrder(8);
|
||||
.HasColumnOrder(8)
|
||||
.HasComment("Элементы заклинания");
|
||||
|
||||
b.Property<bool>("IsFocus")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_focus")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Фокус?");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
@@ -1476,28 +1550,33 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Range")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("range")
|
||||
.HasColumnOrder(6);
|
||||
.HasColumnOrder(6)
|
||||
.HasComment("Дальность заклинания");
|
||||
|
||||
b.Property<string>("Requirement")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("requirement")
|
||||
.HasColumnOrder(12);
|
||||
.HasColumnOrder(12)
|
||||
.HasComment("Требования к заклинанию");
|
||||
|
||||
b.Property<string>("Target")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("target")
|
||||
.HasColumnOrder(10);
|
||||
.HasColumnOrder(10)
|
||||
.HasComment("Цель заклинания");
|
||||
|
||||
b.PrimitiveCollection<SpellTradition[]>("Traditions")
|
||||
.IsRequired()
|
||||
.HasColumnType("spell_tradition[]")
|
||||
.HasColumnName("traditions")
|
||||
.HasColumnOrder(7);
|
||||
.HasColumnOrder(7)
|
||||
.HasComment("Традиции заклинания");
|
||||
|
||||
b.Property<string>("Trigger")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("trigger")
|
||||
.HasColumnOrder(9);
|
||||
.HasColumnOrder(9)
|
||||
.HasComment("Триггер заклинания");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_spells");
|
||||
@@ -1652,13 +1731,15 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<string>("Additional")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("additional")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(3)
|
||||
.HasComment("Дополнительная информация");
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.IsRequired()
|
||||
@@ -1669,7 +1750,8 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("GroupId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("group_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Группа подклассов");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_subclasses");
|
||||
@@ -1685,12 +1767,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<int?>("ClassId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("class_id")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Идентификатор класса");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_subclass_groups");
|
||||
@@ -1706,12 +1790,14 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(1)
|
||||
.HasComment("Идентификатор");
|
||||
|
||||
b.Property<TraitType>("Type")
|
||||
.HasColumnType("trait_type")
|
||||
.HasColumnName("type")
|
||||
.HasColumnOrder(2);
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Тип признака");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_traits");
|
||||
|
||||
@@ -10,51 +10,93 @@ using Pf2eModel.Model.Structure;
|
||||
|
||||
namespace Pf2eModel.Model.Base;
|
||||
|
||||
/// <summary>
|
||||
/// Корневая сущность.
|
||||
/// </summary>
|
||||
public class Entity
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор сущности.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[Column(Order = 1)]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Отображаемое имя сущности.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Отображаемое имя")]
|
||||
public LocaleString Name { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Тип сущности.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Тип объекта")]
|
||||
[Comment("Тип сущности")]
|
||||
public EntityType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Часть имени в URL.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[MaxLength(Pf2eDbContext.NameLength)]
|
||||
[Comment("Часть имени в URL")]
|
||||
public string Slug { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Изображение сущности.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[StringLength(255)]
|
||||
[Comment("Изображение объекта")]
|
||||
public string Img { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Текстовое описание сущности.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Текстовое описание объекта")]
|
||||
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
|
||||
[Comment("Текстовое описание сущности")]
|
||||
public string Description { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Редкость сущности.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Редкость сущности")]
|
||||
public EntityRarity Rarity { get; set; } = EntityRarity.Common;
|
||||
|
||||
/// <summary>
|
||||
/// Флаг, указывающий, что у объекта существует перевод.
|
||||
/// </summary>
|
||||
[Column(Order = 8)]
|
||||
[Comment("Флаг, указывающий, что у объекта существует перевод")]
|
||||
[Comment("Флаг, указывающий, что у сущности существует перевод")]
|
||||
public bool? IsTranslated { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи.
|
||||
/// </summary>
|
||||
[Column(Order = 9)]
|
||||
[Comment("Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи")]
|
||||
[Comment("Флаг, указывающий, что сущность был проверен и не требует автоматической перезаписи")]
|
||||
public bool? IsChecked { get; set; } = false;
|
||||
|
||||
public virtual ICollection<Trait> Traits { get; set; } = [];
|
||||
/// <summary>
|
||||
/// Коллекция признаков, связанных с сущностью.
|
||||
/// </summary>
|
||||
public ICollection<Trait> Traits { get; set; } = [];
|
||||
|
||||
public virtual ICollection<Keyword> Keywords { get; set; } = [];
|
||||
/// <summary>
|
||||
/// Коллекция ключевых слов, связанных с сущностью.
|
||||
/// </summary>
|
||||
public ICollection<Keyword> Keywords { get; set; } = [];
|
||||
|
||||
public virtual ICollection<EntitySource> Sources { get; set; } = [];
|
||||
/// <summary>
|
||||
/// Коллекция источников, связанных с сущностью.
|
||||
/// </summary>
|
||||
public ICollection<EntitySource> Sources { get; set; } = [];
|
||||
|
||||
public virtual ICollection<EntityExternal> Externals { get; set; } = [];
|
||||
/// <summary>
|
||||
/// Коллекция внешних ссылок, связанных с сущностью.
|
||||
/// </summary>
|
||||
public ICollection<EntityExternal> Externals { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,25 +1,45 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
|
||||
namespace Pf2eModel.Model.Base.Keywords;
|
||||
|
||||
/// <summary>
|
||||
/// Ключевое слово.
|
||||
/// </summary>
|
||||
public class Keyword
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Отображаемое имя ключевого слова.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Отображаемое имя")]
|
||||
public LocaleString Name = [];
|
||||
|
||||
/// <summary>
|
||||
/// Часть имени в URL.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(Pf2eDbContext.NameLength)]
|
||||
[Comment("Часть имени в URL")]
|
||||
public string Slug { get; set; } = null!;
|
||||
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
/// <summary>
|
||||
/// Коллекция сущностей, которые используют это ключевое слово.
|
||||
/// </summary>
|
||||
public ICollection<Entity> Entities { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция синонимов ключевого слова.
|
||||
/// </summary>
|
||||
public ICollection<KeywordAlias> Aliases { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,22 +1,40 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2eModel.Model.Base.Keywords;
|
||||
|
||||
/// <summary>
|
||||
/// Синоним ключевого слова.
|
||||
/// </summary>
|
||||
public class KeywordAlias
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор связаннного ключевого слова.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор ключевого слова")]
|
||||
public int KeywordId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Значение синонима ключевого слова.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(Pf2eDbContext.NameLength)]
|
||||
[Comment("Синоним")]
|
||||
public string Value { get; set; } = null!;
|
||||
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
/// <summary>
|
||||
/// Ключевое слово, к которому относится синоним.
|
||||
/// </summary>
|
||||
public Keyword Keyword { get; set; } = null!;
|
||||
}
|
||||
|
||||
@@ -4,30 +4,56 @@ using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2eModel.Model.Base.Source;
|
||||
|
||||
/// <summary>
|
||||
/// Связь между сущностью и источником.
|
||||
/// </summary>
|
||||
public class EntitySource
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор связи.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 0)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор сущности.
|
||||
/// </summary>
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор сущности")]
|
||||
public int EntityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор источника.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор источника")]
|
||||
public int SourceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация о источнике, например, номер страницы, номер тома и т.д.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Номер страницы, эррата и т.д.")]
|
||||
public string Suffix { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Флаг, указывающий, что объект является частью ремастера.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Флаг, указывающий, что объект является частью ремастера")]
|
||||
public bool IsRemaster { get; set; }
|
||||
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
/// <summary>
|
||||
/// Сущность, к которой относится источник.
|
||||
/// </summary>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Источник, к которому относится сущность.
|
||||
/// </summary>
|
||||
public Source Source { get; set; } = null!;
|
||||
}
|
||||
|
||||
@@ -1,26 +1,48 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Base.Source;
|
||||
|
||||
/// <summary>
|
||||
/// Источник сущности.
|
||||
/// </summary>
|
||||
public class Source
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор источника.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Отображаемое имя источника.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[MaxLength(Pf2eDbContext.NameLength)]
|
||||
[Comment("Отображаемое имя")]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Категория источника.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Категория источника")]
|
||||
public SourceCategory Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата выхода источника.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Дата выхода источника")]
|
||||
public DateOnly? ReleaseDate { get; set; }
|
||||
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
/// <summary>
|
||||
/// Связанные сущности.
|
||||
/// </summary>
|
||||
public ICollection<EntitySource> EntitySources { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -4,13 +4,24 @@ using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2eModel.Model.Base.Targets;
|
||||
|
||||
/// <summary>
|
||||
/// Внешняя ссылка сущности.
|
||||
/// </summary>
|
||||
[PrimaryKey(nameof(EntityId), nameof(TargetId))]
|
||||
public class EntityExternal
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор сущности.
|
||||
/// </summary>
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор сущности")]
|
||||
public int EntityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор цели.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор цели")]
|
||||
public int TargetId { get; set; }
|
||||
|
||||
/*
|
||||
@@ -19,18 +30,30 @@ public class EntityExternal
|
||||
public string ExternalId { get; set; } = "";
|
||||
*/
|
||||
|
||||
/// <summary>
|
||||
/// Конечная часть URL внешней ссылки.
|
||||
/// Для источников Foundry - полный UUID объекта.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Часть URL до объекта. Для источников Foundry - полный UUID объекта")]
|
||||
public string Suffix { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Контрольная сумма объекта.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[MaxLength(32)]
|
||||
[Comment("Контроль версии объекта")]
|
||||
[Comment("Контрольная сумма объекта")]
|
||||
public string Md5 { get; set; } = null!;
|
||||
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
public virtual Entity Entity { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Сущность, которая ссылается на внешнюю ссылку.
|
||||
/// </summary>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
public virtual ExternalTarget Target { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Цель внешней ссылки.
|
||||
/// </summary>
|
||||
public ExternalTarget Target { get; set; } = null!;
|
||||
}
|
||||
|
||||
@@ -1,28 +1,49 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2eModel.Model.Base.Targets;
|
||||
|
||||
/// <summary>
|
||||
/// Цель внешней ссылки.
|
||||
/// </summary>
|
||||
public class ExternalTarget
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор цели.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название цели.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[StringLength(Pf2eDbContext.NameLength)]
|
||||
[Comment("Отображаемое имя")]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Иконка цели.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[StringLength(255)]
|
||||
[Comment("Иконка цели")]
|
||||
public string Icon { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Префикс для URL-адреса внешней ссылки.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[StringLength(Pf2eDbContext.NameLength)]
|
||||
[Comment("Префикс для URL-адреса внешней ссылки")]
|
||||
public string Prefix { get; set; } = null!;
|
||||
|
||||
[Column(Order = 4)]
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
/// <summary>
|
||||
/// Коллекция сущностей, которые ссылаются на эту цель.
|
||||
/// </summary>
|
||||
public ICollection<EntityExternal> EntityExternals { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,21 +1,41 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2eModel.Model.Common;
|
||||
|
||||
/// <summary>
|
||||
/// Частота использования.
|
||||
/// </summary>
|
||||
public class Frequency
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Максимальная продолжительсность.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Максимальная продолжительсность")]
|
||||
public int Max { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Частота использования.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Частота использования")]
|
||||
public int Per { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Значение использования.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Значение использования")]
|
||||
public int? Value { get; set; }
|
||||
}
|
||||
|
||||
@@ -3,8 +3,16 @@ using System.Reflection;
|
||||
|
||||
namespace Pf2eModel.Model.Common.I18n;
|
||||
|
||||
/// <summary>
|
||||
/// Расширения для работы с локализацией.
|
||||
/// </summary>
|
||||
public static class LocaleExtension
|
||||
{
|
||||
/// <summary>
|
||||
/// Получение строкового представления типа локализации.
|
||||
/// </summary>
|
||||
/// <param name="localeType">Тип локализации.</param>
|
||||
/// <returns>Строковое представление типа локализации.</returns>
|
||||
public static string GetTypeString(this LocaleType localeType)
|
||||
{
|
||||
FieldInfo fi = localeType.GetType().GetField(localeType.ToString())!;
|
||||
@@ -16,7 +24,13 @@ public static class LocaleExtension
|
||||
?? localeType.ToString();
|
||||
}
|
||||
|
||||
public static LocaleType GetTypeByString(this string localeType)
|
||||
/// <summary>
|
||||
/// Получение типа локализации по строковому представлению типа локализации.
|
||||
/// </summary>
|
||||
/// <param name="localeTypeString">Строковое представление типа локализации.</param>
|
||||
/// <returns>Тип локализации.</returns>
|
||||
/// <exception cref="InvalidEnumArgumentException">Исключение, если строковое представление не соответсвует ни одному типу локализации.</exception>
|
||||
public static LocaleType GetTypeByString(this string localeTypeString)
|
||||
{
|
||||
foreach (FieldInfo field in typeof(LocaleType).GetFields())
|
||||
{
|
||||
@@ -28,7 +42,7 @@ public static class LocaleExtension
|
||||
continue;
|
||||
}
|
||||
|
||||
if (descriptionAttribute.Description == localeType)
|
||||
if (descriptionAttribute.Description == localeTypeString)
|
||||
{
|
||||
return (LocaleType)field.GetValue(null)!;
|
||||
}
|
||||
@@ -36,6 +50,7 @@ public static class LocaleExtension
|
||||
|
||||
throw new InvalidEnumArgumentException();
|
||||
}
|
||||
|
||||
/*
|
||||
public static IQueryable<T> WhereLocale(
|
||||
this IQueryable<T> query, Expression<Func<T, LocaleString>> expression, string searchTerm) where T : class
|
||||
|
||||
@@ -1,11 +1,26 @@
|
||||
namespace Pf2eModel.Model.Common.I18n;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент локализации.
|
||||
/// </summary>
|
||||
/// <param name="type">Тип локализации.</param>
|
||||
/// <param name="value">Значение локализации.</param>
|
||||
public class LocaleItem(LocaleType type, string value)
|
||||
{
|
||||
/// <summary>
|
||||
/// Тип локализации.
|
||||
/// </summary>
|
||||
public LocaleType Locale { get; set; } = type;
|
||||
|
||||
/// <summary>
|
||||
/// Значение локализации.
|
||||
/// </summary>
|
||||
public string Value { get; set; } = value;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса <see cref="LocaleItem"/> по паре ключ-значение.
|
||||
/// </summary>
|
||||
/// <param name="item">Пара ключ-значение по строковому представлению типа.</param>
|
||||
public LocaleItem(KeyValuePair<string, string> item)
|
||||
: this(LocaleExtension.GetTypeByString(item.Key), item.Value) { }
|
||||
: this(item.Key.GetTypeByString(), item.Value) { }
|
||||
}
|
||||
|
||||
@@ -3,40 +3,90 @@ using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace Pf2eModel.Model.Common.I18n;
|
||||
|
||||
/// <summary>
|
||||
/// Локализованная строка.
|
||||
/// </summary>
|
||||
public class LocaleString : ICollection<LocaleItem>
|
||||
{
|
||||
/// <summary>
|
||||
/// Список локализаций строк.
|
||||
/// </summary>
|
||||
private readonly List<LocaleItem> _items = [];
|
||||
|
||||
/// <summary>
|
||||
/// Проверяет наличие хотя бы одной локализации.
|
||||
/// </summary>
|
||||
private void AssureDefault()
|
||||
{
|
||||
if (_items.Count == 0)
|
||||
{
|
||||
_items.Add(new LocaleItem(LocaleType.English, string.Empty));
|
||||
_items.Add(new(LocaleType.English, string.Empty));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Количество локализаций.
|
||||
/// </summary>
|
||||
public int Count => _items.Count;
|
||||
|
||||
public bool IsReadOnly => false;
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция реализованных типов локализаций.
|
||||
/// </summary>
|
||||
public ICollection<LocaleType> Types => _items.Select(c => c.Locale).ToList();
|
||||
|
||||
/// <inheritdoc/>
|
||||
public bool IsReadOnly => false;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса <see cref="LocaleString"/>.
|
||||
/// </summary>
|
||||
public LocaleString()
|
||||
{
|
||||
AssureDefault();
|
||||
}
|
||||
|
||||
private LocaleType _E(string localeString) => LocaleExtension.GetTypeByString(localeString);
|
||||
/// <summary>
|
||||
/// Получение типа локализации по строковому представлению.
|
||||
/// </summary>
|
||||
/// <param name="localeString">Строковое представление.</param>
|
||||
/// <returns>Тип локализации.</returns>
|
||||
private LocaleType _E(string localeString) => localeString.GetTypeByString();
|
||||
|
||||
/// <summary>
|
||||
/// Получение типа локализации с учётом её наличия в коллекции.
|
||||
/// </summary>
|
||||
/// <param name="locale">Искомый тип локализации.</param>
|
||||
/// <returns>Реальный тип локализации.</returns>
|
||||
private LocaleType RealLocale(LocaleType locale) =>
|
||||
Contains(locale) ? locale : LocaleType.English;
|
||||
|
||||
/// <summary>
|
||||
/// Получение типа локализации по строковому представлению с учётом её наличия в коллекции.
|
||||
/// </summary>
|
||||
/// <param name="localeString">Строковое представление искомого типа локализации.</param>
|
||||
/// <returns>Реальный тип локализации.</returns>
|
||||
private LocaleType RealLocale(string localeString) => RealLocale(_E(localeString));
|
||||
|
||||
/// <summary>
|
||||
/// Получение объекта локализованной строки по типу локализации.
|
||||
/// </summary>
|
||||
/// <param name="locale">Искомый тип локализации.</param>
|
||||
/// <returns>Объект локализованной строки.</returns>
|
||||
public LocaleItem GetItem(LocaleType locale) => this.First(c => c.Locale == RealLocale(locale));
|
||||
|
||||
public LocaleItem GetItem(string locale) => this.First(c => c.Locale == RealLocale(locale));
|
||||
/// <summary>
|
||||
/// Получение объекта локализованной строки по строковому представлению типа локализации.
|
||||
/// </summary>
|
||||
/// <param name="localeString">Строковое представление искомого типа локализации.</param>
|
||||
/// <returns>Объект локализованной строки.</returns>
|
||||
public LocaleItem GetItem(string localeString) =>
|
||||
this.First(c => c.Locale == RealLocale(localeString));
|
||||
|
||||
/// <summary>
|
||||
/// Получение локализованной строки по типу локализации.
|
||||
/// </summary>
|
||||
/// <param name="locale">Искомый тип локализации.</param>
|
||||
/// <returns>Локализованная строка.</returns>
|
||||
public string this[LocaleType locale]
|
||||
{
|
||||
get => GetItem(locale).Value;
|
||||
@@ -48,52 +98,87 @@ public class LocaleString : ICollection<LocaleItem>
|
||||
}
|
||||
else
|
||||
{
|
||||
_items.Add(new LocaleItem(locale, value));
|
||||
_items.Add(new(locale, value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение локализованной строки по типу локализации.
|
||||
/// </summary>
|
||||
/// <param name="localeString">Строковое представление искомого типа локализации.</param>
|
||||
/// <returns>Локализованная строка.</returns>
|
||||
public string this[string localeString]
|
||||
{
|
||||
get => this[_E(localeString)];
|
||||
set => this[_E(localeString)] = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Добавление объекта локализованной строки в коллекцию.
|
||||
/// </summary>
|
||||
/// <param name="item">Объект локализированной строки.</param>
|
||||
public void Add(LocaleItem item)
|
||||
{
|
||||
this[item.Locale] = item.Value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Добавление локализованной строки в коллекцию.
|
||||
/// </summary>
|
||||
/// <param name="locale">Тип локализации.</param>
|
||||
/// <param name="value">Строка локазации.</param>
|
||||
public void Add(LocaleType locale, string value)
|
||||
{
|
||||
this[locale] = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Отчистка коллекции локализованных строк.
|
||||
/// </summary>
|
||||
public void Clear()
|
||||
{
|
||||
_items.Clear();
|
||||
AssureDefault();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверка наличия объекта локализованной строки в коллекции.
|
||||
/// </summary>
|
||||
/// <param name="item">Объект локализированной строки.</param>
|
||||
/// <returns>`true`, если объект есть; `false`, если нет.</returns>
|
||||
public bool Contains(LocaleItem item)
|
||||
{
|
||||
return _items.Contains(item);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверка наличия локализованной строки в коллекции по типу локализации.
|
||||
/// </summary>
|
||||
/// <param name="locale">Тип локализации.</param>
|
||||
/// <returns>`true`, если искомый тип локализации есть; `false`, если нет.</returns>
|
||||
public bool Contains(LocaleType locale)
|
||||
{
|
||||
return Types.Contains(locale);
|
||||
}
|
||||
|
||||
public bool Contains(string value)
|
||||
/// <summary>
|
||||
/// Проверка наличия локализованной строки в коллекции по строковому представлению типа локализации.
|
||||
/// </summary>
|
||||
/// <param name="localeString">Строковое представление искомого типа локализации.</param>
|
||||
/// <returns>`true`, если искомый тип локализации есть; `false`, если нет.</returns>
|
||||
public bool Contains(string localeString)
|
||||
{
|
||||
return this.Any(item => item.Value == value);
|
||||
return this.Any(item => item.Value == localeString);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public void CopyTo(LocaleItem[] array, int arrayIndex)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public bool Remove(LocaleItem item)
|
||||
{
|
||||
bool result = _items.Remove(item);
|
||||
@@ -107,21 +192,28 @@ public class LocaleString : ICollection<LocaleItem>
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerator<LocaleItem> GetEnumerator()
|
||||
{
|
||||
return _items.GetEnumerator();
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return GetEnumerator();
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override string ToString()
|
||||
{
|
||||
return this[LocaleType.English];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Сериализация локализованной строки в JSON-формат.
|
||||
/// </summary>
|
||||
/// <returns>Строковое представление JSON-представления.</returns>
|
||||
public string Serialize()
|
||||
{
|
||||
JObject json = [];
|
||||
@@ -134,10 +226,15 @@ public class LocaleString : ICollection<LocaleItem>
|
||||
return json.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Десериализация локализованной строки из JSON-формата.
|
||||
/// </summary>
|
||||
/// <param name="input">Строковое представление JSON-представления.</param>
|
||||
/// <returns>Объект локализованной строки.</returns>
|
||||
public static LocaleString Deserialize(string input)
|
||||
{
|
||||
JObject json = JObject.Parse(input);
|
||||
LocaleString result = new();
|
||||
LocaleString result = [];
|
||||
|
||||
foreach (KeyValuePair<string, JToken?> item in json)
|
||||
{
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
namespace Pf2eModel.Model.Common.I18n;
|
||||
|
||||
/// <summary>
|
||||
/// Тип локализации.
|
||||
/// </summary>
|
||||
public enum LocaleType
|
||||
{
|
||||
[Description("en")]
|
||||
|
||||
@@ -1,20 +1,36 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Common;
|
||||
|
||||
/// <summary>
|
||||
/// Изучаемая способность.
|
||||
/// </summary>
|
||||
public class Training
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название способности.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Название способности")]
|
||||
public LocaleString Name { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Тип способности.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Тип способности")]
|
||||
public TrainingType Type { get; set; }
|
||||
}
|
||||
|
||||
@@ -2,10 +2,20 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип действия.
|
||||
/// </summary>
|
||||
public enum ActionCategory
|
||||
{
|
||||
/// <summary>
|
||||
/// Неизвестный тип действия.
|
||||
/// </summary>
|
||||
[PgName("unknown")]
|
||||
Unknown,
|
||||
|
||||
/// <summary>
|
||||
/// Действие архетипа.
|
||||
/// </summary>
|
||||
[PgName("archetype")]
|
||||
Archetype,
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Перечиленение количества действий.
|
||||
/// </summary>
|
||||
public enum ActionEnum
|
||||
{
|
||||
[PgName("unknown")]
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
using NpgsqlTypes;
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
public enum AncestryVision
|
||||
{
|
||||
[PgName("normal")]
|
||||
Normal,
|
||||
|
||||
[PgName("low-light-vision")]
|
||||
LowLightVision,
|
||||
|
||||
[PgName("dark-vision")]
|
||||
DarkVision,
|
||||
}
|
||||
@@ -2,26 +2,50 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Перечисление значений атрибутов.
|
||||
/// </summary>
|
||||
public enum AttributeValues
|
||||
{
|
||||
/// <summary>
|
||||
/// Свободный атрибут.
|
||||
/// </summary>
|
||||
[PgName("free")]
|
||||
Free,
|
||||
|
||||
/// <summary>
|
||||
/// Сила.
|
||||
/// </summary>
|
||||
[PgName("str")]
|
||||
Strength,
|
||||
|
||||
/// <summary>
|
||||
/// Ловкость.
|
||||
/// </summary>
|
||||
[PgName("dex")]
|
||||
Dexterity,
|
||||
|
||||
/// <summary>
|
||||
/// Телосложение.
|
||||
/// </summary>
|
||||
[PgName("con")]
|
||||
Constitution,
|
||||
|
||||
/// <summary>
|
||||
/// Интеллект.
|
||||
/// </summary>
|
||||
[PgName("int")]
|
||||
Intelligence,
|
||||
|
||||
/// <summary>
|
||||
/// Мудрость.
|
||||
/// </summary>
|
||||
[PgName("wis")]
|
||||
Wisdom,
|
||||
|
||||
/// <summary>
|
||||
/// Харизма.
|
||||
/// </summary>
|
||||
[PgName("cha")]
|
||||
Charisma,
|
||||
}
|
||||
|
||||
@@ -2,23 +2,50 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип элемента прогрессии класса.
|
||||
/// </summary>
|
||||
public enum ClassProgressionType
|
||||
{
|
||||
/// <summary>
|
||||
/// Неизвестный тип прогрессии класса.
|
||||
/// </summary>
|
||||
[PgName("entity")]
|
||||
Entity,
|
||||
|
||||
/// <summary>
|
||||
/// Навык архетипа.
|
||||
/// </summary>
|
||||
[PgName("ancestry_feat")]
|
||||
AncestryFeat,
|
||||
|
||||
/// <summary>
|
||||
/// Классовая особенность.
|
||||
/// </summary>
|
||||
[PgName("class_feat")]
|
||||
ClassFeat,
|
||||
|
||||
/// <summary>
|
||||
/// Общий навык.
|
||||
/// </summary>
|
||||
[PgName("general_feat")]
|
||||
GeneralFeat,
|
||||
|
||||
/// <summary>
|
||||
/// Навык
|
||||
/// </summary>
|
||||
[PgName("skill_feat")]
|
||||
SkillFeat,
|
||||
|
||||
/// <summary>
|
||||
/// Увеличение навыка.
|
||||
/// </summary>
|
||||
[PgName("skill_increase")]
|
||||
SkillIncrease,
|
||||
|
||||
/// <summary>
|
||||
/// Увеличение атрибута.
|
||||
/// </summary>
|
||||
[PgName("attribute_increase")]
|
||||
AttributeIncrease,
|
||||
}
|
||||
|
||||
@@ -2,23 +2,44 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип состояния
|
||||
/// </summary>
|
||||
public enum ConditionGroup
|
||||
{
|
||||
/// <summary>
|
||||
/// Неизвестое состояние.
|
||||
/// </summary>
|
||||
[PgName("unknown")]
|
||||
Unknown,
|
||||
|
||||
/// <summary>
|
||||
/// Чувство.
|
||||
/// </summary>
|
||||
[PgName("senses")]
|
||||
Senses,
|
||||
|
||||
/// <summary>
|
||||
/// Способность.
|
||||
/// </summary>
|
||||
[PgName("abilities")]
|
||||
Abilities,
|
||||
|
||||
/// <summary>
|
||||
/// Смерть.
|
||||
/// </summary>
|
||||
[PgName("death")]
|
||||
Death,
|
||||
|
||||
/// <summary>
|
||||
/// Отношение. (???)
|
||||
/// </summary>
|
||||
[PgName("attitudes")]
|
||||
Attitudes,
|
||||
|
||||
/// <summary>
|
||||
/// Обнаружение.
|
||||
/// </summary>
|
||||
[PgName("detection")]
|
||||
Detection,
|
||||
}
|
||||
|
||||
@@ -2,17 +2,32 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип божества.
|
||||
/// </summary>
|
||||
public enum DeityCategory
|
||||
{
|
||||
/// <summary>
|
||||
/// Божество.
|
||||
/// </summary>
|
||||
[PgName("deity")]
|
||||
Deity,
|
||||
|
||||
/// <summary>
|
||||
/// Пантеон.
|
||||
/// </summary>
|
||||
[PgName("pantheon")]
|
||||
Pantheon,
|
||||
|
||||
/// <summary>
|
||||
/// Ковенант.
|
||||
/// </summary>
|
||||
[PgName("covenant")]
|
||||
Covenant,
|
||||
|
||||
/// <summary>
|
||||
/// Философия.
|
||||
/// </summary>
|
||||
[PgName("philosophy")]
|
||||
Philosophy,
|
||||
}
|
||||
|
||||
@@ -2,17 +2,32 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип божественной силы.
|
||||
/// </summary>
|
||||
public enum DeityFonts
|
||||
{
|
||||
/// <summary>
|
||||
/// Без божественной силы.
|
||||
/// </summary>
|
||||
[PgName("none")]
|
||||
None,
|
||||
|
||||
/// <summary>
|
||||
/// Исцеление.
|
||||
/// </summary>
|
||||
[PgName("heal")]
|
||||
Heal,
|
||||
|
||||
/// <summary>
|
||||
/// Урон.
|
||||
/// </summary>
|
||||
[PgName("harm")]
|
||||
Harm,
|
||||
|
||||
/// <summary>
|
||||
/// Любой тип божественной силы.
|
||||
/// </summary>
|
||||
[PgName("any")]
|
||||
Any,
|
||||
}
|
||||
|
||||
@@ -2,14 +2,26 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип освящения божества.
|
||||
/// </summary>
|
||||
public enum DeitySanctification
|
||||
{
|
||||
/// <summary>
|
||||
/// Святость.
|
||||
/// </summary>
|
||||
[PgName("holy")]
|
||||
Holy,
|
||||
|
||||
/// <summary>
|
||||
/// Нечестивость.
|
||||
/// </summary>
|
||||
[PgName("unholy")]
|
||||
Unholy,
|
||||
|
||||
/// <summary>
|
||||
/// Любое.
|
||||
/// </summary>
|
||||
[PgName("any")]
|
||||
Any,
|
||||
}
|
||||
|
||||
@@ -2,26 +2,50 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Перечисление элементов.
|
||||
/// </summary>
|
||||
public enum ElementEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// Универсальный элемент.
|
||||
/// </summary>
|
||||
[PgName("universal")]
|
||||
Universal,
|
||||
|
||||
/// <summary>
|
||||
/// Воздух.
|
||||
/// </summary>
|
||||
[PgName("air")]
|
||||
Air,
|
||||
|
||||
/// <summary>
|
||||
/// Вода.
|
||||
/// </summary>
|
||||
[PgName("water")]
|
||||
Water,
|
||||
|
||||
/// <summary>
|
||||
/// Земля.
|
||||
/// </summary>
|
||||
[PgName("earth")]
|
||||
Earth,
|
||||
|
||||
/// <summary>
|
||||
/// Огонь.
|
||||
/// </summary>
|
||||
[PgName("fire")]
|
||||
Fire,
|
||||
|
||||
/// <summary>
|
||||
/// Дерево.
|
||||
/// </summary>
|
||||
[PgName("wood")]
|
||||
Wood,
|
||||
|
||||
/// <summary>
|
||||
/// Металл.
|
||||
/// </summary>
|
||||
[PgName("metal")]
|
||||
Metal,
|
||||
}
|
||||
|
||||
@@ -2,17 +2,32 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Перечисление редкости сущности.
|
||||
/// </summary>
|
||||
public enum EntityRarity
|
||||
{
|
||||
/// <summary>
|
||||
/// Обычная редкость.
|
||||
/// </summary>
|
||||
[PgName("common")]
|
||||
Common,
|
||||
|
||||
/// <summary>
|
||||
/// Необычная редкость.
|
||||
/// </summary>
|
||||
[PgName("uncommon")]
|
||||
Uncommon,
|
||||
|
||||
/// <summary>
|
||||
/// Редкая редкость.
|
||||
/// </summary>
|
||||
[PgName("rare")]
|
||||
Rare,
|
||||
|
||||
/// <summary>
|
||||
/// Уникальная редкость.
|
||||
/// </summary>
|
||||
[PgName("unique")]
|
||||
Unique,
|
||||
}
|
||||
|
||||
@@ -2,62 +2,122 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип сущности.
|
||||
/// </summary>
|
||||
public enum EntityType
|
||||
{
|
||||
/// <summary>
|
||||
/// Неизвестный тип сущности.
|
||||
/// </summary>
|
||||
[PgName("unknown")]
|
||||
Unknown,
|
||||
|
||||
/// <summary>
|
||||
/// Признак.
|
||||
/// </summary>
|
||||
[PgName("trait")]
|
||||
Trait,
|
||||
|
||||
/// <summary>
|
||||
/// Действие.
|
||||
/// </summary>
|
||||
[PgName("action")]
|
||||
Action,
|
||||
|
||||
/// <summary>
|
||||
/// Родословная.
|
||||
/// </summary>
|
||||
[PgName("ancestry")]
|
||||
Ancestry,
|
||||
|
||||
/// <summary>
|
||||
/// Архетип.
|
||||
/// </summary>
|
||||
[PgName("archetype")]
|
||||
Archetype,
|
||||
|
||||
/// <summary>
|
||||
/// Происхождение.
|
||||
/// </summary>
|
||||
[PgName("background")]
|
||||
Background,
|
||||
|
||||
/// <summary>
|
||||
/// Рюкзак.
|
||||
/// </summary>
|
||||
[PgName("backpack")]
|
||||
Backpack,
|
||||
|
||||
/// <summary>
|
||||
/// Способность кампании.
|
||||
/// </summary>
|
||||
[PgName("campaign_feature")]
|
||||
CampaignFeature,
|
||||
|
||||
/// <summary>
|
||||
/// Класс.
|
||||
/// </summary>
|
||||
[PgName("class")]
|
||||
Class,
|
||||
|
||||
/// <summary>
|
||||
/// Группа подклассов.
|
||||
/// </summary>
|
||||
[PgName("subclass_group")]
|
||||
SubclassGroup,
|
||||
|
||||
/// <summary>
|
||||
/// Подкласс.
|
||||
/// </summary>
|
||||
[PgName("subclass")]
|
||||
Subclass,
|
||||
|
||||
/// <summary>
|
||||
/// Состояние.
|
||||
/// </summary>
|
||||
[PgName("condition")]
|
||||
Condition,
|
||||
|
||||
/// <summary>
|
||||
/// Божество.
|
||||
/// </summary>
|
||||
[PgName("deity")]
|
||||
Deity,
|
||||
|
||||
/// <summary>
|
||||
/// Навык.
|
||||
/// </summary>
|
||||
[PgName("feat")]
|
||||
Feat,
|
||||
|
||||
/// <summary>
|
||||
/// Наследие.
|
||||
/// </summary>
|
||||
[PgName("heritage")]
|
||||
Heritage,
|
||||
|
||||
/// <summary>
|
||||
/// Заклианиние.
|
||||
/// </summary>
|
||||
[PgName("spell")]
|
||||
Spell,
|
||||
|
||||
/// <summary>
|
||||
/// Ритуал.
|
||||
/// </summary>
|
||||
[PgName("ritual")]
|
||||
Ritual,
|
||||
|
||||
/// <summary>
|
||||
/// Язык.
|
||||
/// </summary>
|
||||
[PgName("language")]
|
||||
Language,
|
||||
|
||||
/// <summary>
|
||||
/// Правило.
|
||||
/// </summary>
|
||||
[PgName("rule")]
|
||||
Rule,
|
||||
}
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
using NpgsqlTypes;
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
public enum FeatActionType
|
||||
{
|
||||
[PgName("passive")]
|
||||
Passive,
|
||||
|
||||
[PgName("action")]
|
||||
Action,
|
||||
|
||||
[PgName("reaction")]
|
||||
Reaction,
|
||||
|
||||
[PgName("free")]
|
||||
Free,
|
||||
}
|
||||
@@ -7,11 +7,14 @@ public enum FeatCategory
|
||||
[PgName("uncategorized")]
|
||||
Uncategorized,
|
||||
|
||||
[PgName("ancestry")]
|
||||
Ancestry,
|
||||
|
||||
[PgName("ancestry-feature")]
|
||||
AncestryFeature,
|
||||
|
||||
[PgName("class-feature")]
|
||||
ClassFeature,
|
||||
[PgName("archetype")]
|
||||
Archetype,
|
||||
|
||||
[PgName("calling")]
|
||||
Calling,
|
||||
@@ -19,15 +22,15 @@ public enum FeatCategory
|
||||
[PgName("class")]
|
||||
Class,
|
||||
|
||||
[PgName("class-feature")]
|
||||
ClassFeature,
|
||||
|
||||
[PgName("skill")]
|
||||
Skill,
|
||||
|
||||
[PgName("general")]
|
||||
General,
|
||||
|
||||
[PgName("ancestry")]
|
||||
Ancestry,
|
||||
|
||||
[PgName("bonus")]
|
||||
Bonus,
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
using NpgsqlTypes;
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
public enum Size
|
||||
{
|
||||
[PgName("tiny")]
|
||||
Tiny,
|
||||
|
||||
[PgName("small")]
|
||||
Small,
|
||||
|
||||
[PgName("medium")]
|
||||
Medium,
|
||||
|
||||
[PgName("large")]
|
||||
Large,
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using NpgsqlTypes;
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Размер.
|
||||
/// </summary>
|
||||
public enum SizeEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// Крошечный размер.
|
||||
/// </summary>
|
||||
[PgName("tiny")]
|
||||
Tiny,
|
||||
|
||||
/// <summary>
|
||||
/// Маленький размер.
|
||||
/// </summary>
|
||||
[PgName("small")]
|
||||
Small,
|
||||
|
||||
/// <summary>
|
||||
/// Средний размер.
|
||||
/// </summary>
|
||||
[PgName("medium")]
|
||||
Medium,
|
||||
|
||||
/// <summary>
|
||||
/// Большой размер.
|
||||
/// </summary>
|
||||
[PgName("large")]
|
||||
Large,
|
||||
|
||||
/// <summary>
|
||||
/// Громадный размер.
|
||||
/// </summary>
|
||||
[PgName("huge")]
|
||||
Huge,
|
||||
}
|
||||
@@ -2,26 +2,50 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Перечисление категорий источников.
|
||||
/// </summary>
|
||||
public enum SourceCategory
|
||||
{
|
||||
/// <summary>
|
||||
/// Неизвестная категория источника.
|
||||
/// </summary>
|
||||
[PgName("rulebook")]
|
||||
Rulebooks,
|
||||
|
||||
/// <summary>
|
||||
/// Серия приключений.
|
||||
/// </summary>
|
||||
[PgName("adventure-path")]
|
||||
AdventurePaths,
|
||||
|
||||
/// <summary>
|
||||
/// Lost Omens
|
||||
/// </summary>
|
||||
[PgName("lost-omens")]
|
||||
LostOmens,
|
||||
|
||||
/// <summary>
|
||||
/// Приключение.
|
||||
/// </summary>
|
||||
[PgName("adventures")]
|
||||
Adventures,
|
||||
|
||||
/// <summary>
|
||||
/// Комиксы.
|
||||
/// </summary>
|
||||
[PgName("comics")]
|
||||
Comics,
|
||||
|
||||
/// <summary>
|
||||
/// Блог-посты.
|
||||
/// </summary>
|
||||
[PgName("blog-posts")]
|
||||
BlogPosts,
|
||||
|
||||
/// <summary>
|
||||
/// Сообщество.
|
||||
/// </summary>
|
||||
[PgName("society")]
|
||||
Society,
|
||||
}
|
||||
|
||||
@@ -2,38 +2,74 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип области заклинания.
|
||||
/// </summary>
|
||||
public enum SpellAreaType
|
||||
{
|
||||
/// <summary>
|
||||
/// Взрыв.
|
||||
/// </summary>
|
||||
[PgName("burst")]
|
||||
Burst,
|
||||
|
||||
/// <summary>
|
||||
/// Эманация.
|
||||
/// </summary>
|
||||
[PgName("emanation")]
|
||||
Emanation,
|
||||
|
||||
/// <summary>
|
||||
/// Конус.
|
||||
/// </summary>
|
||||
[PgName("cone")]
|
||||
Cone,
|
||||
|
||||
/// <summary>
|
||||
/// Линия.
|
||||
/// </summary>
|
||||
[PgName("line")]
|
||||
Line,
|
||||
|
||||
/// <summary>
|
||||
/// Квадрат.
|
||||
/// </summary>
|
||||
[PgName("square")]
|
||||
Square,
|
||||
|
||||
/// <summary>
|
||||
/// Куб.
|
||||
/// </summary>
|
||||
[PgName("cube")]
|
||||
Cube,
|
||||
|
||||
/// <summary>
|
||||
/// Цилиндр.
|
||||
/// </summary>
|
||||
[PgName("cylinder")]
|
||||
Cylinder,
|
||||
|
||||
/// <summary>
|
||||
/// Варьируемое.
|
||||
/// </summary>
|
||||
[PgName("varies")]
|
||||
Varies,
|
||||
|
||||
/// <summary>
|
||||
/// Параллелипипед.
|
||||
/// </summary>
|
||||
[PgName("cuboid")]
|
||||
Cuboid,
|
||||
|
||||
/// <summary>
|
||||
/// Круг.
|
||||
/// </summary>
|
||||
[PgName("circle")]
|
||||
Circle,
|
||||
|
||||
/// <summary>
|
||||
/// Иное.
|
||||
/// </summary>
|
||||
[PgName("other")]
|
||||
Other,
|
||||
}
|
||||
|
||||
@@ -2,11 +2,26 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип урона заклинания.
|
||||
/// </summary>
|
||||
public enum SpellDamageCategory
|
||||
{
|
||||
/// <summary>
|
||||
/// Обычный урон.
|
||||
/// </summary>
|
||||
[PgName("normal")]
|
||||
Normal,
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительный урон.
|
||||
/// </summary>
|
||||
[PgName("persistent")]
|
||||
Persistent,
|
||||
|
||||
/// <summary>
|
||||
/// Брызги.
|
||||
/// </summary>
|
||||
[PgName("splash")]
|
||||
Splash,
|
||||
}
|
||||
|
||||
@@ -2,14 +2,26 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип урона заклинания.
|
||||
/// </summary>
|
||||
public enum SpellDamageKinds
|
||||
{
|
||||
/// <summary>
|
||||
/// Урон.
|
||||
/// </summary>
|
||||
[PgName("damage")]
|
||||
Damage,
|
||||
|
||||
/// <summary>
|
||||
/// Исцеление.
|
||||
/// </summary>
|
||||
[PgName("healing")]
|
||||
Healing,
|
||||
|
||||
/// <summary>
|
||||
/// Любое.
|
||||
/// </summary>
|
||||
[PgName("any")]
|
||||
Any,
|
||||
}
|
||||
|
||||
@@ -2,26 +2,50 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Традиция заклинания.
|
||||
/// </summary>
|
||||
public enum SpellTradition
|
||||
{
|
||||
/// <summary>
|
||||
/// Без традиции.
|
||||
/// </summary>
|
||||
[PgName("none")]
|
||||
None,
|
||||
|
||||
/// <summary>
|
||||
/// Сакральная традиция.
|
||||
/// </summary>
|
||||
[PgName("divine")]
|
||||
Divine,
|
||||
|
||||
/// <summary>
|
||||
/// Оккультная традиция.
|
||||
/// </summary>
|
||||
[PgName("occult")]
|
||||
Occult,
|
||||
|
||||
/// <summary>
|
||||
/// Арканная традиция.
|
||||
/// </summary>
|
||||
[PgName("arcane")]
|
||||
Arcane,
|
||||
|
||||
/// <summary>
|
||||
/// Примальная традиция.
|
||||
/// </summary>
|
||||
[PgName("primal")]
|
||||
Primal,
|
||||
|
||||
/// <summary>
|
||||
/// Элементная традиция.
|
||||
/// </summary>
|
||||
[PgName("elemental")]
|
||||
Elemental,
|
||||
|
||||
/// <summary>
|
||||
/// Все традиции.
|
||||
/// </summary>
|
||||
[PgName("all")]
|
||||
All,
|
||||
}
|
||||
|
||||
@@ -2,23 +2,44 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Ранг тренировки.
|
||||
/// </summary>
|
||||
public enum TrainingRank
|
||||
{
|
||||
/// <summary>
|
||||
/// Необученный.
|
||||
/// </summary>
|
||||
[PgName("untrained")]
|
||||
Untrained,
|
||||
|
||||
/// <summary>
|
||||
/// Обученный.
|
||||
/// </summary>
|
||||
[PgName("trained")]
|
||||
Trained,
|
||||
|
||||
/// <summary>
|
||||
/// Эксперт.
|
||||
/// </summary>
|
||||
[PgName("expert")]
|
||||
Expert,
|
||||
|
||||
/// <summary>
|
||||
/// Мастер.
|
||||
/// </summary>
|
||||
[PgName("master")]
|
||||
Master,
|
||||
|
||||
/// <summary>
|
||||
/// Легендарный.
|
||||
/// </summary>
|
||||
[PgName("legendary")]
|
||||
Legendary,
|
||||
|
||||
/// <summary>
|
||||
/// Мифический.
|
||||
/// </summary>
|
||||
[PgName("mythic")]
|
||||
Mythic,
|
||||
}
|
||||
|
||||
@@ -2,23 +2,44 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип тренировки.
|
||||
/// </summary>
|
||||
public enum TrainingType
|
||||
{
|
||||
/// <summary>
|
||||
/// Восприятие.
|
||||
/// </summary>
|
||||
[PgName("perception")]
|
||||
Perception,
|
||||
|
||||
/// <summary>
|
||||
/// Навык.
|
||||
/// </summary>
|
||||
[PgName("skill")]
|
||||
Skill,
|
||||
|
||||
/// <summary>
|
||||
/// Знание.
|
||||
/// </summary>
|
||||
[PgName("lore")]
|
||||
Lore,
|
||||
|
||||
/// <summary>
|
||||
/// Оружие.
|
||||
/// </summary>
|
||||
[PgName("weapon")]
|
||||
Weapon,
|
||||
|
||||
/// <summary>
|
||||
/// Защита.
|
||||
/// </summary>
|
||||
[PgName("armor")]
|
||||
Armor,
|
||||
|
||||
/// <summary>
|
||||
/// Спасбросок.
|
||||
/// </summary>
|
||||
[PgName("save")]
|
||||
Save,
|
||||
}
|
||||
|
||||
@@ -2,14 +2,26 @@
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Тип признака.
|
||||
/// </summary>
|
||||
public enum TraitType
|
||||
{
|
||||
/// <summary>
|
||||
/// Обычный признак.
|
||||
/// </summary>
|
||||
[PgName("regular")]
|
||||
Regular,
|
||||
|
||||
/// <summary>
|
||||
/// Признак класса.
|
||||
/// </summary>
|
||||
[PgName("class")]
|
||||
Class,
|
||||
|
||||
/// <summary>
|
||||
/// Признак традиции.
|
||||
/// </summary>
|
||||
[PgName("tradition")]
|
||||
Tradition,
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
using NpgsqlTypes;
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// Перечисление типов зрения.
|
||||
/// </summary>
|
||||
public enum VisionEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// Обычное зрение.
|
||||
/// </summary>
|
||||
[PgName("normal")]
|
||||
Normal,
|
||||
|
||||
/// <summary>
|
||||
/// Зрение в темноте.
|
||||
/// </summary>
|
||||
[PgName("low-light-vision")]
|
||||
LowLightVision,
|
||||
|
||||
/// <summary>
|
||||
/// Тёмное зрение.
|
||||
/// </summary>
|
||||
[PgName("dark-vision")]
|
||||
DarkVision,
|
||||
}
|
||||
@@ -3,10 +3,19 @@ using Pf2eModel.Model.Base;
|
||||
|
||||
namespace Pf2eModel.Model;
|
||||
|
||||
/// <summary>
|
||||
/// Интерфейс сущностей структуры.
|
||||
/// </summary>
|
||||
public interface IEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор сущности.
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Корневая сущность.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Entity Entity { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,23 +1,38 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Действие.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Action)]
|
||||
public class Action : IEntity
|
||||
{
|
||||
[System.ComponentModel.DataAnnotations.Key]
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Количество действий.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Количество действий")]
|
||||
public ActionEnum Actions { get; set; } = ActionEnum.Unknown;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
|
||||
[Comment("Дополнительная информация")]
|
||||
public string? Extra { get; set; }
|
||||
|
||||
public Entity Entity { get; set; } = null!;
|
||||
}
|
||||
|
||||
@@ -1,37 +1,73 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure.AncestryRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Родословная.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Ancestry)]
|
||||
public class Ancestry : IEntity
|
||||
{
|
||||
[System.ComponentModel.DataAnnotations.Key]
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Размеры родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
public Size[] Size { get; set; } = [];
|
||||
[Comment("Размеры родословной")]
|
||||
public SizeEnum[] Size { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Количество очков здоровья.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Количество очков здоровья")]
|
||||
public int Hp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Скорость передвижения.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Скорость передвижения")]
|
||||
public int Speed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип зрения.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
public AncestryVision Vision { get; set; } = AncestryVision.Normal;
|
||||
[Comment("Тип зрения")]
|
||||
public VisionEnum VisionEnum { get; set; } = VisionEnum.Normal;
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция повышениий аттрибутов.
|
||||
/// </summary>
|
||||
public ICollection<AncestryBoost> AncestryBoosts { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция сущностей родословной.
|
||||
/// </summary>
|
||||
public ICollection<AncestryItem> AncestryItems { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция языков родословной.
|
||||
/// </summary>
|
||||
public ICollection<AncestryLanguage> AncestryLanguages { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция наследий.
|
||||
/// </summary>
|
||||
public ICollection<Heritage> Heritages { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,30 +1,55 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Архетип.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Archetype)]
|
||||
public class Archetype : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Уровень.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Уровень")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор способности, которая является посвящением в архетип.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("ID посвящения")]
|
||||
public int? DedicationFeatId { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация об архетипе.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
|
||||
[Comment("Дополнительная информация")]
|
||||
public string? Extra { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Посвящение в архетип.
|
||||
/// </summary>
|
||||
public Feat DedicationFeat { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Способности архетипа.
|
||||
/// </summary>
|
||||
public ICollection<Feat> Feats { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,24 +1,40 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure.BackgroundRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Предыстория.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Background)]
|
||||
public class Background : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Аттрибуты предыстории.
|
||||
/// </summary>
|
||||
public ICollection<BackgroundBoost> BackgroundBoosts { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Способности предыстории.
|
||||
/// </summary>
|
||||
public ICollection<BackgroundItem> BackgroundItems { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Навыки предыстории.
|
||||
/// </summary>
|
||||
public ICollection<BackgroundTraining> BackgroundSkills { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,40 +1,73 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure.ClassRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Класс.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Class)]
|
||||
public class Class : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
[Column(Order = 3)]
|
||||
/// <summary>
|
||||
/// Количество очков здоровья.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Количество очков здоровья")]
|
||||
public int Hp { get; set; }
|
||||
|
||||
[Column(Order = 4)]
|
||||
public int Perception { get; set; }
|
||||
|
||||
[Column(Order = 5)]
|
||||
/// <summary>
|
||||
/// Флаг, указывающий на то, что класс является заклинательным.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Заклинатель?")]
|
||||
public bool Spellcasting { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Традиция заклинаний класса.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
public SpellTradition Tradition { get; set; }
|
||||
[Comment("Традиция заклинаний")]
|
||||
public SpellTradition? Tradition { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Количество дополнительных навыков.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Дополнительные навыки")]
|
||||
public int AdditionalTrainedSkills { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Аттрибуты класса.
|
||||
/// </summary>
|
||||
public virtual ICollection<ClassKeyAbility> ClassKeyAbilities { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Прогрессия класса.
|
||||
/// </summary>
|
||||
public virtual ICollection<ClassProgression> ClassProgressions { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Навыки класса.
|
||||
/// </summary>
|
||||
public virtual ICollection<ClassTraining> ClassTrainings { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Группы подклассов.
|
||||
/// </summary>
|
||||
public virtual ICollection<SubclassGroup> SubclassGroups { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,24 +1,38 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Состояние.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Condition)]
|
||||
public class Condition : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Группа состояния.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Группа состояния")]
|
||||
public ConditionGroup? Group { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
|
||||
[Comment("Дополнительная информация")]
|
||||
public string? Extra { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Common;
|
||||
using Pf2eModel.Model.Enum;
|
||||
@@ -7,35 +8,72 @@ using Pf2eModel.Model.Structure.DeityRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Божество.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Deity)]
|
||||
public class Deity : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тип божества.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Тип божества")]
|
||||
public DeityCategory Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип божественный силы.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Тип божественной силы")]
|
||||
public DeityFonts Fonts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип освящения.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Тип освящения")]
|
||||
public DeitySanctification Sanctification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Обязательное освящение.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Обязательное освящение")]
|
||||
public bool SanctificationMust { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Аттрибуты божества.
|
||||
/// </summary>
|
||||
public ICollection<DeityAttribute> DeityAttributes { get; set; } = new List<DeityAttribute>();
|
||||
|
||||
/// <summary>
|
||||
/// Домены божества.
|
||||
/// </summary>
|
||||
public ICollection<DeityDomain> DeityDomains { get; set; } = new List<DeityDomain>();
|
||||
|
||||
/// <summary>
|
||||
/// Заклинания божества.
|
||||
/// </summary>
|
||||
public ICollection<DeitySpell> DeitySpells { get; set; } = new List<DeitySpell>();
|
||||
|
||||
/// <summary>
|
||||
/// Оружия божества.
|
||||
/// </summary>
|
||||
public ICollection<DeityWeapon> DeityWeapons { get; set; } = new List<DeityWeapon>();
|
||||
|
||||
/// <summary>
|
||||
/// Навыки божества.
|
||||
/// </summary>
|
||||
public ICollection<Training> Skills { get; set; } = new List<Training>();
|
||||
}
|
||||
|
||||
@@ -1,28 +1,44 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure.FeatRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Способность.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Feat)]
|
||||
public class Feat : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Категория способности.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
public ActionCategory Category { get; set; }
|
||||
[Comment("Категория способности")]
|
||||
public FeatCategory Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уровень способности.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Уровень способности")]
|
||||
public int Level { get; set; }
|
||||
|
||||
[Column(Order = 5)]
|
||||
[Comment("Количество действий")]
|
||||
public int? Actions { get; set; } = null;
|
||||
|
||||
[Column(Order = 6)]
|
||||
@@ -37,11 +53,20 @@ public class Feat : IEntity
|
||||
[Column(Order = 9)]
|
||||
public bool IsPassive { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация.
|
||||
/// </summary>
|
||||
[Column(Order = 10)]
|
||||
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
|
||||
[Comment("Дополнительная информация")]
|
||||
public string? Extra { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Архетипы, которые могут использовать эту способность.
|
||||
/// </summary>
|
||||
public ICollection<Archetype> Archetypes { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Требования к получению способности.
|
||||
/// </summary>
|
||||
public ICollection<FeatPrerequisite> FeatPrerequisites { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,22 +1,36 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Наследие.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Heritage)]
|
||||
public class Heritage : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор родословной")]
|
||||
public int? AncestryId { get; set; }
|
||||
|
||||
public virtual Ancestry? Ancestry { get; set; }
|
||||
/// <summary>
|
||||
/// Родословная.
|
||||
/// </summary>
|
||||
public Ancestry? Ancestry { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Язык.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Language)]
|
||||
public class Language : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
}
|
||||
|
||||
@@ -8,60 +8,127 @@ using Pf2eModel.Model.Structure.RitualRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Ритуал.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Ritual)]
|
||||
public class Ritual : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Уровень ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Уровень ритуала")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительность ритуала в секундах.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Продолжительность ритуала в секундах")]
|
||||
public int CastTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Время действия эффекта ритуала в секундах.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Время действия эффекта ритуала в секундах")]
|
||||
public int Duration { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Элементы ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Элементы ритуала")]
|
||||
public ElementEnum[] Elements { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Дальнность ритуала в футах.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Дальнность ритуала")]
|
||||
public int Range { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ранг основной проверки.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Ранг основной проверки")]
|
||||
public TrainingRank PrimaryCheckRank { get; set; } = TrainingRank.Trained;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация об основной проверки.
|
||||
/// </summary>
|
||||
[Column(Order = 8)]
|
||||
[Comment("Дополнительная информация об основной проверки")]
|
||||
public LocaleString? PrimaryCheckSuffix { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Количество дополнительных заклинателей, необходимых для ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 9)]
|
||||
[Comment("Количество дополнительных заклинателей")]
|
||||
public int SecondaryCasters { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Максимальное количество дополнительных заклинателей, необходимых для ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 10)]
|
||||
[Comment("Максимальное количество дополнительных заклинателей")]
|
||||
public int SecondaryCastersMax { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация о дополнительных заклинателях.
|
||||
/// </summary>
|
||||
[Column(Order = 11)]
|
||||
[Comment("Дополнительная информация о дополнительных заклинателях")]
|
||||
public LocaleString? SecondaryCastersSuffix { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Строка, описывающая дальность ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 12)]
|
||||
[Comment("Дальность ритуала")]
|
||||
public LocaleString? RangeString { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Строка, описывающая цель ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 13)]
|
||||
[Comment("Цель ритуала")]
|
||||
public LocaleString? Target { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Строка, описывающая стоимость ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 14)]
|
||||
[Comment("Стоимость ритуала")]
|
||||
public LocaleString? Cost { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Строка, описывающая требования к ритуалу.
|
||||
/// </summary>
|
||||
[Column(Order = 15)]
|
||||
[Comment("Требования к ритуалу")]
|
||||
public LocaleString? Requirement { get; set; } = null;
|
||||
|
||||
public virtual RitualArea? Area { get; set; } = null;
|
||||
/// <summary>
|
||||
/// Коллекция областей ритуала.
|
||||
/// </summary>
|
||||
public RitualArea? Area { get; set; } = null;
|
||||
|
||||
public virtual ICollection<RitualCheck> Checks { get; set; } = [];
|
||||
/// <summary>
|
||||
/// Коллекция проверок ритуала.
|
||||
/// </summary>
|
||||
public ICollection<RitualCheck> Checks { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,29 +1,53 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Правило.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Rule)]
|
||||
public class Rule : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Порядок отображения.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Порядок отображения")]
|
||||
public int Order { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор родительского правила.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Родительского правило")]
|
||||
public int? ParentId { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Родительское правило.
|
||||
/// </summary>
|
||||
public Rule? Parent { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Дочерние правила.
|
||||
/// </summary>
|
||||
public ICollection<Rule> Children { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Хлебные крошки для отображения в интерфейсе.
|
||||
/// </summary>
|
||||
public string[] Breadcrumbs { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
@@ -7,48 +8,97 @@ using Pf2eModel.Model.Structure.SpellRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Заклинание.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Spell)]
|
||||
public class Spell : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Уровень заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Является ли заклинание фокусом.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Фокус?")]
|
||||
public bool IsFocus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Количество действий, необходимых для применения заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Количество действий")]
|
||||
public ActionEnum Actions { get; set; } = ActionEnum.Other;
|
||||
|
||||
/// <summary>
|
||||
/// Время длительности заклинания в секундах.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Время длительности заклинания")]
|
||||
public int? Duration { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Дальность заклинания в футах.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Дальность заклинания")]
|
||||
public int Range { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Традиции заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Традиции заклинания")]
|
||||
public SpellTradition[] Traditions { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Элементы заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 8)]
|
||||
[Comment("Элементы заклинания")]
|
||||
public ElementEnum[] Elements { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Триггер заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 9)]
|
||||
[Comment("Триггер заклинания")]
|
||||
public LocaleString? Trigger { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Цель заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 10)]
|
||||
[Comment("Цель заклинания")]
|
||||
public LocaleString? Target { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Стоимость заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 11)]
|
||||
[Comment("Стоимость заклинания")]
|
||||
public LocaleString? Cost { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Требования к заклинанию.
|
||||
/// </summary>
|
||||
[Column(Order = 12)]
|
||||
[Comment("Требования к заклинанию")]
|
||||
public LocaleString? Requirement { get; set; } = null;
|
||||
|
||||
/*
|
||||
@@ -78,7 +128,13 @@ public class Spell : IEntity
|
||||
public bool CanHeightening { get; set; }
|
||||
*/
|
||||
|
||||
public virtual ICollection<SpellArea> SpellAreas { get; set; } = [];
|
||||
/// <summary>
|
||||
/// Коллекция области заклинания.
|
||||
/// </summary>
|
||||
public ICollection<SpellArea> SpellAreas { get; set; } = [];
|
||||
|
||||
public virtual ICollection<SpellDefense> SpellDefenses { get; set; } = new List<SpellDefense>();
|
||||
/// <summary>
|
||||
/// Коллекция защиты от заклинания.
|
||||
/// </summary>
|
||||
public ICollection<SpellDefense> SpellDefenses { get; set; } = new List<SpellDefense>();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
@@ -7,28 +8,48 @@ using Pf2eModel.Model.Structure.ClassRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Подкласс.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Subclass)]
|
||||
public class Subclass : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Идетификатор группы подклассов.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Группа подклассов")]
|
||||
public int GroupId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Группа подклассов.
|
||||
/// </summary>
|
||||
public SubclassGroup Group { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Дополнительная информация")]
|
||||
public LocaleString Additional { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация в формате JSON.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
|
||||
public string Extra { get; set; } = "{}";
|
||||
|
||||
public virtual ICollection<Entity> Entities { get; set; } = [];
|
||||
public ICollection<Entity> Entities { get; set; } = [];
|
||||
|
||||
public virtual ICollection<SubclassTrainings> Trainings { get; set; } = [];
|
||||
public ICollection<SubclassTrainings> Trainings { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,23 +1,41 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Группа подклассов.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.SubclassGroup)]
|
||||
public class SubclassGroup : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор класса.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор класса")]
|
||||
public int? ClassId { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Класс, к которому относится группа подклассов.
|
||||
/// </summary>
|
||||
public Class? Class { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция подклассов, относящихся к этой группе.
|
||||
/// </summary>
|
||||
public ICollection<Subclass> Subclasses { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,23 +1,36 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Признак.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Trait)]
|
||||
public class Trait : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тип признака.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Тип признака")]
|
||||
public TraitType Type { get; set; }
|
||||
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
public virtual ICollection<Entity> Entities { get; set; } = [];
|
||||
/// <summary>
|
||||
/// Сущности, которые имеют данный признак.
|
||||
/// </summary>
|
||||
public ICollection<Entity> Entities { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@ using Pf2eModel.Model.Structure.SpellRelation;
|
||||
|
||||
namespace Pf2eModel;
|
||||
|
||||
/// <summary>
|
||||
/// Контекст базы данных.
|
||||
/// </summary>
|
||||
public partial class Pf2eDbContext : DbContext
|
||||
{
|
||||
public Pf2eDbContext() { }
|
||||
@@ -118,6 +121,7 @@ public partial class Pf2eDbContext : DbContext
|
||||
|
||||
#endregion
|
||||
|
||||
/// <inheritdoc/>
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
DotEnv.Load(options: new DotEnvOptions(probeForEnv: true, probeLevelsToSearch: 2));
|
||||
@@ -131,28 +135,28 @@ public partial class Pf2eDbContext : DbContext
|
||||
builder =>
|
||||
{
|
||||
builder
|
||||
.MapEnum<ActionEnum>()
|
||||
.MapEnum<EntityType>()
|
||||
.MapEnum<EntityRarity>()
|
||||
.MapEnum<LocaleType>()
|
||||
.MapEnum<TraitType>()
|
||||
.MapEnum<ActionCategory>()
|
||||
.MapEnum<Size>()
|
||||
.MapEnum<AncestryVision>()
|
||||
.MapEnum<ActionEnum>()
|
||||
.MapEnum<AttributeValues>()
|
||||
.MapEnum<ClassProgressionType>()
|
||||
.MapEnum<ConditionGroup>()
|
||||
.MapEnum<DeityCategory>()
|
||||
.MapEnum<DeityFonts>()
|
||||
.MapEnum<DeitySanctification>()
|
||||
.MapEnum<FeatActionType>()
|
||||
.MapEnum<ElementEnum>()
|
||||
.MapEnum<EntityRarity>()
|
||||
.MapEnum<EntityType>()
|
||||
.MapEnum<FeatCategory>()
|
||||
.MapEnum<SizeEnum>()
|
||||
.MapEnum<SourceCategory>()
|
||||
.MapEnum<SpellAreaType>()
|
||||
.MapEnum<SpellDamageCategory>()
|
||||
.MapEnum<SpellDamageKinds>()
|
||||
.MapEnum<SpellTradition>()
|
||||
.MapEnum<AttributeValues>()
|
||||
.MapEnum<TrainingRank>()
|
||||
.MapEnum<SourceCategory>();
|
||||
.MapEnum<TraitType>()
|
||||
.MapEnum<VisionEnum>();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -23,28 +23,45 @@ using Pf2eModel.Model.Structure.SpellRelation;
|
||||
|
||||
namespace Pf2eModel;
|
||||
|
||||
[SuppressMessage("ReSharper", "UnusedParameter.Local")]
|
||||
/// <inheritdoc/>
|
||||
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
||||
public partial class Pf2eDbContext
|
||||
{
|
||||
/// <summary>
|
||||
/// Длина названия сущности.
|
||||
/// </summary>
|
||||
public const int NameLength = 255;
|
||||
|
||||
/// <inheritdoc/>
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.UseIdentityByDefaultColumns();
|
||||
|
||||
DefineEnums(modelBuilder);
|
||||
// DefineEnums(modelBuilder);
|
||||
DefineBase(modelBuilder);
|
||||
DefineCommon(modelBuilder);
|
||||
DefineStructure(modelBuilder);
|
||||
DefineMethods(modelBuilder);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Устанавливает связь между сущностью и её корневой сущностью.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип сущности.</typeparam>
|
||||
/// <param name="entity">Генератор настроек таблицы сущности.</param>
|
||||
private void BindEntity<T>(EntityTypeBuilder<T> entity)
|
||||
where T : class, IEntity
|
||||
{
|
||||
entity.HasOne(e => e.Entity).WithOne().HasForeignKey<T>(e => e.Id).IsRequired();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Устанавливает связь между сущностью и локализованной строкой.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип сущности.</typeparam>
|
||||
/// <param name="entity">Генератор настроек таблицы сущности.</param>
|
||||
/// <param name="func">Функция, выбирающая поле сущности.</param>
|
||||
/// <param name="required">Флаг, указывающий, что локализованная строка не может быть `null`.</param>
|
||||
private void BindLocaleString<T>(
|
||||
EntityTypeBuilder<T> entity,
|
||||
Expression<Func<T, LocaleString?>> func,
|
||||
@@ -59,33 +76,41 @@ public partial class Pf2eDbContext
|
||||
.IsRequired(required);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет перечисления, используемые в модели.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineEnums(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder
|
||||
.HasPostgresEnum<ActionEnum>()
|
||||
.HasPostgresEnum<EntityType>()
|
||||
.HasPostgresEnum<EntityRarity>()
|
||||
.HasPostgresEnum<LocaleType>()
|
||||
.HasPostgresEnum<TraitType>()
|
||||
.HasPostgresEnum<ActionCategory>()
|
||||
.HasPostgresEnum<Size>()
|
||||
.HasPostgresEnum<AncestryVision>()
|
||||
.HasPostgresEnum<ActionEnum>()
|
||||
.HasPostgresEnum<AttributeValues>()
|
||||
.HasPostgresEnum<ClassProgressionType>()
|
||||
.HasPostgresEnum<ConditionGroup>()
|
||||
.HasPostgresEnum<DeityCategory>()
|
||||
.HasPostgresEnum<DeityFonts>()
|
||||
.HasPostgresEnum<DeitySanctification>()
|
||||
.HasPostgresEnum<FeatActionType>()
|
||||
.HasPostgresEnum<ElementEnum>()
|
||||
.HasPostgresEnum<EntityRarity>()
|
||||
.HasPostgresEnum<EntityType>()
|
||||
.HasPostgresEnum<FeatCategory>()
|
||||
.HasPostgresEnum<SizeEnum>()
|
||||
.HasPostgresEnum<SourceCategory>()
|
||||
.HasPostgresEnum<SpellAreaType>()
|
||||
.HasPostgresEnum<SpellDamageCategory>()
|
||||
.HasPostgresEnum<SpellDamageKinds>()
|
||||
.HasPostgresEnum<SpellTradition>()
|
||||
.HasPostgresEnum<AttributeValues>()
|
||||
.HasPostgresEnum<TrainingRank>()
|
||||
.HasPostgresEnum<SourceCategory>();
|
||||
.HasPostgresEnum<TraitType>()
|
||||
.HasPostgresEnum<VisionEnum>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет базовые сущности и их связи.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineBase(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Entity>(entity =>
|
||||
@@ -151,6 +176,10 @@ public partial class Pf2eDbContext
|
||||
modelBuilder.Entity<KeywordAlias>(entity => { });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет общие сущности и их связи.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineCommon(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Frequency>(entity => { });
|
||||
@@ -163,6 +192,10 @@ public partial class Pf2eDbContext
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет структуру сущностей и их связи.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineStructure(ModelBuilder modelBuilder)
|
||||
{
|
||||
// Action
|
||||
@@ -517,6 +550,10 @@ public partial class Pf2eDbContext
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет методы, которые будут использоваться в запросах LINQ.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineMethods(ModelBuilder modelBuilder)
|
||||
{
|
||||
MethodInfo localeSearch = typeof(Pf2eDbContext).GetMethod(
|
||||
|
||||
Reference in New Issue
Block a user