From d7efd9263dc1a67cd2c6c0523f7996d560d46547 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Sun, 1 Feb 2026 18:40:04 +0000 Subject: [PATCH] Refactor Domain project to organize types by Aggregate Reorganized the Domain project structure to follow DDD principles more closely by moving aggregate-specific types into their respective aggregate folders: Account Aggregate: - Moved PersonName, Email, Password value objects Budgets Aggregate: - Moved BudgetCalculator service Debts Aggregate: - Moved MoneyOwed, MoneyPaid value objects Shared types (Money, Currency, Address, etc.) remain in their current locations as they are used across multiple aggregates. All tests passing. Build succeeds without errors. Co-authored-by: Aaron Prohaska --- .../BlazingBudget.Domain/Aggregates/Accounts/Account.cs | 4 +--- .../{ValueObjects => Aggregates/Accounts}/Email.cs | 4 ++-- .../{ValueObjects => Aggregates/Accounts}/Password.cs | 4 ++-- .../{ValueObjects => Aggregates/Accounts}/PersonName.cs | 6 +++--- .../{Services => Aggregates/Budgets}/BudgetCalculator.cs | 8 +------- .../{ValueObjects => Aggregates/Debts}/MoneyOwed.cs | 5 +++-- .../{ValueObjects => Aggregates/Debts}/MoneyPaid.cs | 5 +++-- 7 files changed, 15 insertions(+), 21 deletions(-) rename src/Domain/BlazingBudget.Domain/{ValueObjects => Aggregates/Accounts}/Email.cs (92%) rename src/Domain/BlazingBudget.Domain/{ValueObjects => Aggregates/Accounts}/Password.cs (89%) rename src/Domain/BlazingBudget.Domain/{ValueObjects => Aggregates/Accounts}/PersonName.cs (92%) rename src/Domain/BlazingBudget.Domain/{Services => Aggregates/Budgets}/BudgetCalculator.cs (58%) rename src/Domain/BlazingBudget.Domain/{ValueObjects => Aggregates/Debts}/MoneyOwed.cs (89%) rename src/Domain/BlazingBudget.Domain/{ValueObjects => Aggregates/Debts}/MoneyPaid.cs (91%) diff --git a/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Account.cs b/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Account.cs index a4d33d1..61e9611 100644 --- a/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Account.cs +++ b/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Account.cs @@ -1,6 +1,4 @@ -using BlazingBudget.Domain.ValueObjects; - -namespace BlazingBudget.Domain.Aggregates.Accounts; +namespace BlazingBudget.Domain.Aggregates.Accounts; public sealed class Account : Entity { public PersonName Name { get; private set; } diff --git a/src/Domain/BlazingBudget.Domain/ValueObjects/Email.cs b/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Email.cs similarity index 92% rename from src/Domain/BlazingBudget.Domain/ValueObjects/Email.cs rename to src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Email.cs index ba693c4..cd445a2 100644 --- a/src/Domain/BlazingBudget.Domain/ValueObjects/Email.cs +++ b/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Email.cs @@ -1,7 +1,7 @@ -using CSharpFunctionalExtensions; +using CSharpFunctionalExtensions; using BlazingBudget.Domain.Common; -namespace BlazingBudget.Domain.ValueObjects +namespace BlazingBudget.Domain.Aggregates.Accounts { public class Email : ValueObject { diff --git a/src/Domain/BlazingBudget.Domain/ValueObjects/Password.cs b/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Password.cs similarity index 89% rename from src/Domain/BlazingBudget.Domain/ValueObjects/Password.cs rename to src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Password.cs index 8d1758a..a71d560 100644 --- a/src/Domain/BlazingBudget.Domain/ValueObjects/Password.cs +++ b/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/Password.cs @@ -1,6 +1,6 @@ -using CSharpFunctionalExtensions; +using CSharpFunctionalExtensions; -namespace BlazingBudget.Domain.ValueObjects; +namespace BlazingBudget.Domain.Aggregates.Accounts; public class Password : ValueObject { diff --git a/src/Domain/BlazingBudget.Domain/ValueObjects/PersonName.cs b/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/PersonName.cs similarity index 92% rename from src/Domain/BlazingBudget.Domain/ValueObjects/PersonName.cs rename to src/Domain/BlazingBudget.Domain/Aggregates/Accounts/PersonName.cs index 14a9211..5a24e90 100644 --- a/src/Domain/BlazingBudget.Domain/ValueObjects/PersonName.cs +++ b/src/Domain/BlazingBudget.Domain/Aggregates/Accounts/PersonName.cs @@ -1,6 +1,6 @@ -using CSharpFunctionalExtensions; +using CSharpFunctionalExtensions; -namespace BlazingBudget.Domain.ValueObjects; +namespace BlazingBudget.Domain.Aggregates.Accounts; public class PersonName : ValueObject { public string FirstName { get; private set; } @@ -11,7 +11,7 @@ public class PersonName : ValueObject public string FullName => $"{FirstName} {LastName}"; public static readonly int MaxLength = 300; - + private PersonName() { } [JsonConstructor] diff --git a/src/Domain/BlazingBudget.Domain/Services/BudgetCalculator.cs b/src/Domain/BlazingBudget.Domain/Aggregates/Budgets/BudgetCalculator.cs similarity index 58% rename from src/Domain/BlazingBudget.Domain/Services/BudgetCalculator.cs rename to src/Domain/BlazingBudget.Domain/Aggregates/Budgets/BudgetCalculator.cs index 7a8c208..5e677e8 100644 --- a/src/Domain/BlazingBudget.Domain/Services/BudgetCalculator.cs +++ b/src/Domain/BlazingBudget.Domain/Aggregates/Budgets/BudgetCalculator.cs @@ -1,12 +1,6 @@ -using BlazingBudget.Domain.Aggregates.Budgets; using CSharpFunctionalExtensions; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace BlazingBudget.Domain.Services +namespace BlazingBudget.Domain.Aggregates.Budgets { internal class BudgetCalculator { diff --git a/src/Domain/BlazingBudget.Domain/ValueObjects/MoneyOwed.cs b/src/Domain/BlazingBudget.Domain/Aggregates/Debts/MoneyOwed.cs similarity index 89% rename from src/Domain/BlazingBudget.Domain/ValueObjects/MoneyOwed.cs rename to src/Domain/BlazingBudget.Domain/Aggregates/Debts/MoneyOwed.cs index fd26ccf..7e88b87 100644 --- a/src/Domain/BlazingBudget.Domain/ValueObjects/MoneyOwed.cs +++ b/src/Domain/BlazingBudget.Domain/Aggregates/Debts/MoneyOwed.cs @@ -1,6 +1,7 @@ -using CSharpFunctionalExtensions; +using CSharpFunctionalExtensions; +using BlazingBudget.Domain.ValueObjects; -namespace BlazingBudget.Domain.ValueObjects; +namespace BlazingBudget.Domain.Aggregates.Debts; /// /// Money owed is an amount of money still left to pay. /// diff --git a/src/Domain/BlazingBudget.Domain/ValueObjects/MoneyPaid.cs b/src/Domain/BlazingBudget.Domain/Aggregates/Debts/MoneyPaid.cs similarity index 91% rename from src/Domain/BlazingBudget.Domain/ValueObjects/MoneyPaid.cs rename to src/Domain/BlazingBudget.Domain/Aggregates/Debts/MoneyPaid.cs index 7d42da2..feda7c3 100644 --- a/src/Domain/BlazingBudget.Domain/ValueObjects/MoneyPaid.cs +++ b/src/Domain/BlazingBudget.Domain/Aggregates/Debts/MoneyPaid.cs @@ -1,5 +1,6 @@ - -namespace BlazingBudget.Domain.ValueObjects; +using BlazingBudget.Domain.ValueObjects; + +namespace BlazingBudget.Domain.Aggregates.Debts; /// /// Money paid is an amount of money paid. ///