Implement core backend domain and API workflows
This commit is contained in:
68
RpgRoller/Domain/GameModels.cs
Normal file
68
RpgRoller/Domain/GameModels.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
namespace RpgRoller.Domain;
|
||||
|
||||
public enum RulesetKind
|
||||
{
|
||||
D6,
|
||||
Dnd5e
|
||||
}
|
||||
|
||||
public enum RollVisibility
|
||||
{
|
||||
Public,
|
||||
Private
|
||||
}
|
||||
|
||||
public sealed class UserAccount
|
||||
{
|
||||
public required Guid Id { get; init; }
|
||||
public required string Username { get; init; }
|
||||
public required string PasswordHash { get; set; }
|
||||
public required string DisplayName { get; set; }
|
||||
}
|
||||
|
||||
public sealed class UserSession
|
||||
{
|
||||
public required string Token { get; init; }
|
||||
public required Guid UserId { get; init; }
|
||||
public required DateTimeOffset CreatedAtUtc { get; init; }
|
||||
}
|
||||
|
||||
public sealed class Campaign
|
||||
{
|
||||
public required Guid Id { get; init; }
|
||||
public required Guid GmUserId { get; init; }
|
||||
public required string Name { get; set; }
|
||||
public required RulesetKind Ruleset { get; set; }
|
||||
public long Version { get; set; }
|
||||
}
|
||||
|
||||
public sealed class Character
|
||||
{
|
||||
public required Guid Id { get; init; }
|
||||
public required Guid OwnerUserId { get; init; }
|
||||
public required Guid CampaignId { get; set; }
|
||||
public required string Name { get; set; }
|
||||
}
|
||||
|
||||
public sealed class Skill
|
||||
{
|
||||
public required Guid Id { get; init; }
|
||||
public required Guid CharacterId { get; set; }
|
||||
public required string Name { get; set; }
|
||||
public required string DiceRollDefinition { get; set; }
|
||||
}
|
||||
|
||||
public sealed class RollLogEntry
|
||||
{
|
||||
public required Guid Id { get; init; }
|
||||
public required Guid CampaignId { get; init; }
|
||||
public required Guid CharacterId { get; init; }
|
||||
public required Guid SkillId { get; init; }
|
||||
public required Guid RollerUserId { get; init; }
|
||||
public required RollVisibility Visibility { get; init; }
|
||||
public required int Result { get; init; }
|
||||
public required string Breakdown { get; init; }
|
||||
public required DateTimeOffset TimestampUtc { get; init; }
|
||||
}
|
||||
|
||||
public sealed record DiceExpression(int DiceCount, int Sides, int Modifier, string Canonical);
|
||||
Reference in New Issue
Block a user