refactor: shoved in what i wanted to shove

This commit is contained in:
2025-09-30 18:41:38 +03:00
parent 8c0809d620
commit fc042d126a
64 changed files with 960 additions and 219 deletions

View File

@@ -0,0 +1,23 @@
using Microsoft.AspNetCore.Identity;
namespace LctMonolith.Models.Database;
public class AppUser : IdentityUser<Guid>
{
public string? FirstName { get; set; }
public string? LastName { get; set; }
public DateOnly? BirthDate { get; set; }
public int Experience { get; set; }
public int Mana { get; set; }
public Guid? RankId { get; set; }
public Rank? Rank { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
public ICollection<UserCompetency> Competencies { get; set; } = new List<UserCompetency>();
public ICollection<UserMission> Missions { get; set; } = new List<UserMission>();
public ICollection<UserInventoryItem> Inventory { get; set; } = new List<UserInventoryItem>();
public ICollection<Transaction> Transactions { get; set; } = new List<Transaction>();
public ICollection<RefreshToken> RefreshTokens { get; set; } = new List<RefreshToken>();
public ICollection<EventLog> Events { get; set; } = new List<EventLog>();
public ICollection<Notification> Notifications { get; set; } = new List<Notification>();
}

View File

@@ -0,0 +1,9 @@
namespace LctMonolith.Models.Database;
public class AuditableEntity
{
public DateTimeOffset CreatedOn { get; set; }
public string CreatedBy { get; set; } = string.Empty;
public DateTimeOffset UpdatedOn { get; set; }
public string UpdatedBy { get; set; } = string.Empty;
}

View File

@@ -0,0 +1,16 @@
namespace LctMonolith.Models.Database;
public class Dialogue
{
public Guid Id { get; set; }
public Guid MissionId { get; set; }
public required Mission Mission { get; set; }
public Guid InitialDialogueMessageId { get; set; }
public Dialogue? InitialDialogueMessage { get; set; }
public Guid InterimDialogueMessageId { get; set; }
public Dialogue? InterimDialogueMessage { get; set; }
public Guid EndDialogueMessageId { get; set; }
public Dialogue? EndDialogueMessage { get; set; }
}

View File

@@ -0,0 +1,27 @@
using LctMonolith.Models.Enums;
namespace LctMonolith.Models.Database;
public class DialogueMessage
{
public Guid Id { get; set; }
public Character CharacterLeft { get; set; } = Character.None;
public Character CharacterRight { get; set; } = Character.None;
public CharacterAnimation CharacterLeftAnim { get; set; } = CharacterAnimation.Neutral;
public CharacterAnimation CharacterRightAnim { get; set; } = CharacterAnimation.Neutral;
public string CharacterLeftMessage { get; set; } = string.Empty;
public string CharacterRightMessage { get; set; } = string.Empty;
public MessageStyle CharacterLeftMessageStyle { get; set; } = MessageStyle.Normal;
public MessageStyle CharacterRightMessageStyle { get; set; } = MessageStyle.Normal;
public bool AllowMessageAi { get; set; }
public string MessageAiButtonText { get; set; } = string.Empty;
public Guid InitialDialogueId { get; set; }
public Dialogue? InitialDialogue { get; set; }
public Guid InterimDialogueId { get; set; }
public Dialogue? InterimDialogue { get; set; }
public Guid EndDialogueId { get; set; }
public Dialogue? EndDialogue { get; set; }
public ICollection<DialogueMessageResponseOption> DialogueMessageResponseOptions = new List<DialogueMessageResponseOption>();
}

View File

@@ -0,0 +1,16 @@
using LctMonolith.Models.Enums;
namespace LctMonolith.Models.Database;
public class DialogueMessageResponseOption
{
public Guid Id { get; set; }
public string Message { get; set; } = "...";
public MessageStyle MessageStyle { get; set; } = MessageStyle.Normal;
public int z { get; set; }
public Guid ParentDialogueMessageId { get; set; }
public required DialogueMessage ParentDialogueMessage { get; set; }
public Guid DestinationDialogueMessageId { get; set; }
public DialogueMessage? DestinationDialogueMessage { get; set; }
}

View File

@@ -0,0 +1,11 @@
namespace LctMonolith.Models.Database;
public class EventLog
{
public Guid Id { get; set; } = Guid.NewGuid();
public EventType Type { get; set; }
public Guid UserId { get; set; }
public AppUser User { get; set; } = null!;
public string? Data { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}

View File

@@ -0,0 +1,24 @@
namespace LctMonolith.Models.Database;
public class Mission
{
public Guid Id { get; set; }
public string Title { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public MissionCategory? MissionCategory { get; set; }
public long MissionCategoryId { get; set; }
public Mission? ParentMission { get; set; }
public long ParentMissionId { get; set; }
public int ExpReward { get; set; }
public int ManaReward { get; set; }
public Guid DialogueId { get; set; }
public Dialogue? Dialogue { get; set; }
public ICollection<Mission> ChildMissions { get; set; } = new List<Mission>();
public ICollection<PlayerMission> PlayerMissions { get; set; } = new List<PlayerMission>();
public ICollection<MissionItemReward> MissionItemRewards { get; set; } = new List<MissionItemReward>();
public ICollection<MissionSkillReward> MissionSkillRewards { get; set; } = new List<MissionSkillReward>();
public ICollection<MissionRankRule> MissionRankRules { get; set; } = new List<MissionRankRule>();
public ICollection<RankMissionRule> RankMissionRules { get; set; } = new List<RankMissionRule>();
}

View File

@@ -0,0 +1,9 @@
namespace LctMonolith.Models.Database;
public class MissionCategory
{
public Guid Id { get; set; }
public string Title { get; set; } = string.Empty;
public ICollection<Mission> Missions { get; set; } = new List<Mission>();
}

View File

@@ -0,0 +1,9 @@
namespace LctMonolith.Models.Database;
public class MissionItemReward
{
public Guid Id { get; set; }
public Guid ItemId { get; set; }
public Guid MissionId { get; set; }
public required Mission Mission { get; set; }
}

View File

@@ -0,0 +1,10 @@
namespace LctMonolith.Models.Database;
public class MissionRankRule
{
public Guid Id { get; set; }
public Guid MissionId { get; set; }
public Mission Mission { get; set; } = null!;
public Guid RankId { get; set; }
public Rank Rank { get; set; } = null!;
}

View File

@@ -0,0 +1,11 @@
namespace LctMonolith.Models.Database;
public class MissionSkillReward
{
public Guid Id { get; set; }
public Guid MissionId { get; set; }
public Mission Mission { get; set; } = null!;
public long SkillId { get; set; }
public Skill Skill { get; set; } = null!;
public int Value { get; set; }
}

View File

@@ -0,0 +1,14 @@
namespace LctMonolith.Models.Database;
public class Notification
{
public Guid Id { get; set; } = Guid.NewGuid();
public Guid UserId { get; set; }
public AppUser User { get; set; } = null!;
public string Type { get; set; } = null!;
public string Title { get; set; } = null!;
public string Message { get; set; } = null!;
public bool IsRead { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime? ReadAt { get; set; }
}

View File

@@ -0,0 +1,13 @@
namespace LctMonolith.Models.Database;
public class Player
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public Rank? Rank { get; set; }
public Guid RankId {get; set; }
public int Experience { get; set; }
public ICollection<PlayerMission> PlayerMissions { get; set; } = new List<PlayerMission>();
public ICollection<PlayerSkill> PlayerSkills { get; set; } = new List<PlayerSkill>();
}

View File

@@ -0,0 +1,13 @@
namespace LctMonolith.Models.Database;
public class PlayerMission
{
public Guid Id { get; set; }
public Guid PlayerId { get; set; }
public required Player Player { get; set; }
public Guid MissionId { get; set; }
public required Mission Mission { get; set; }
public DateTime? Started { get; set; }
public DateTime? Completed { get; set; }
public DateTime? RewardsRedeemed { get; set; }
}

View File

@@ -0,0 +1,11 @@
namespace LctMonolith.Models.Database;
public class PlayerSkill
{
public Guid Id { get; set; }
public Guid PlayerId { get; set; }
public Player Player { get; set; } = null!;
public Guid SkillId { get; set; }
public Skill Skill { get; set; } = null!;
public int Score { get; set; }
}

View File

@@ -0,0 +1,13 @@
namespace LctMonolith.Models.Database;
public class Rank
{
public Guid Id { get; set; }
public string Title { get; set; } = string.Empty;
public int ExpNeeded { get; set; }
public ICollection<Player> Players { get; set; } = new List<Player>();
public ICollection<MissionRankRule> MissionRankRules { get; set; } = new List<MissionRankRule>();
public ICollection<RankMissionRule> RankMissionRules { get; set; } = new List<RankMissionRule>();
public ICollection<RankSkillRule> RankSkillRules { get; set; } = new List<RankSkillRule>();
}

View File

@@ -0,0 +1,10 @@
namespace LctMonolith.Models.Database;
public class RankMissionRule
{
public Guid Id { get; set; }
public Guid RankId { get; set; }
public Rank Rank { get; set; } = null!;
public Guid MissionId { get; set; }
public Mission Mission { get; set; } = null!;
}

View File

@@ -0,0 +1,11 @@
namespace LctMonolith.Models.Database;
public class RankSkillRule
{
public Guid Id { get; set; }
public Guid RankId { get; set; }
public Rank Rank { get; set; } = null!;
public Guid SkillId { get; set; }
public Skill Skill { get; set; } = null!;
public int Min { get; set; }
}

View File

@@ -0,0 +1,12 @@
namespace LctMonolith.Models.Database;
public class RefreshToken
{
public Guid Id { get; set; } = Guid.NewGuid();
public string Token { get; set; } = null!;
public DateTime ExpiresAt { get; set; }
public bool IsRevoked { get; set; }
public Guid UserId { get; set; }
public AppUser User { get; set; } = null!;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}

View File

@@ -0,0 +1,10 @@
namespace LctMonolith.Models.Database;
public class Skill
{
public Guid Id { get; set; }
public string Title { get; set; } = string.Empty;
public ICollection<MissionSkillReward> MissionSkillRewards { get; set; } = new List<MissionSkillReward>();
public ICollection<RankSkillRule> RankSkillRules { get; set; } = new List<RankSkillRule>();
public ICollection<PlayerSkill> PlayerSkills { get; set; } = new List<PlayerSkill>();
}

View File

@@ -0,0 +1,12 @@
namespace LctMonolith.Models.Database;
public class StoreItem
{
public Guid Id { get; set; } = Guid.NewGuid();
public string Name { get; set; } = null!;
public string? Description { get; set; }
public int Price { get; set; }
public bool IsActive { get; set; } = true;
public int? Stock { get; set; }
public ICollection<UserInventoryItem> UserInventory { get; set; } = new List<UserInventoryItem>();
}

View File

@@ -0,0 +1,13 @@
namespace LctMonolith.Models.Database;
public class Transaction
{
public Guid Id { get; set; } = Guid.NewGuid();
public Guid UserId { get; set; }
public AppUser User { get; set; } = null!;
public TransactionType Type { get; set; }
public Guid? StoreItemId { get; set; }
public StoreItem? StoreItem { get; set; }
public int ManaAmount { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}

View File

@@ -0,0 +1,3 @@
namespace LctMonolith.Models.Database;
public enum TransactionType { Purchase = 0, Return = 1, Sale = 2 }

View File

@@ -0,0 +1,12 @@
namespace LctMonolith.Models.Database;
public class UserInventoryItem
{
public Guid UserId { get; set; }
public AppUser User { get; set; } = null!;
public Guid StoreItemId { get; set; }
public StoreItem StoreItem { get; set; } = null!;
public int Quantity { get; set; } = 1;
public DateTime AcquiredAt { get; set; } = DateTime.UtcNow;
public bool IsReturned { get; set; }
}