feat(stage3): scaffold task-001 baseline
- WHY: establish Stage 3 task-001 execution baseline per repo intent - WHAT: add minimal solution/project skeleton and boundary docs - RULE: apply stage3 execution runtime and repository workflow directives
This commit is contained in:
parent
063c1a2f2d
commit
d637892055
8
Furniture.DAL.slnx
Normal file
8
Furniture.DAL.slnx
Normal file
@ -0,0 +1,8 @@
|
||||
<Solution>
|
||||
<Folder Name="/src/">
|
||||
<Project Path="src/Furniture.DAL/Furniture.DAL.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/tests/">
|
||||
<Project Path="tests/Furniture.DAL.UnitTests/Furniture.DAL.UnitTests.csproj" />
|
||||
</Folder>
|
||||
</Solution>
|
||||
20
docs/architecture/dal-layer-map.puml
Normal file
20
docs/architecture/dal-layer-map.puml
Normal file
@ -0,0 +1,20 @@
|
||||
@startuml
|
||||
skinparam packageStyle rectangle
|
||||
|
||||
package "furniture-dal" {
|
||||
interface IFurnitureDataProvider
|
||||
interface ICatalogDataProvider
|
||||
interface IFurnitureRepository
|
||||
interface ICatalogRepository
|
||||
interface ICacheInvalidationPolicy
|
||||
|
||||
IFurnitureRepository --> IFurnitureDataProvider
|
||||
ICatalogRepository --> ICatalogDataProvider
|
||||
IFurnitureRepository --> ICacheInvalidationPolicy
|
||||
ICatalogRepository --> ICacheInvalidationPolicy
|
||||
}
|
||||
|
||||
package "furniture-service" as FurnitureService
|
||||
FurnitureService --> IFurnitureRepository
|
||||
FurnitureService --> ICatalogRepository
|
||||
@enduml
|
||||
12
docs/dal/persistence-cache-policy.md
Normal file
12
docs/dal/persistence-cache-policy.md
Normal file
@ -0,0 +1,12 @@
|
||||
# DAL Persistence and Cache Policy
|
||||
|
||||
## Responsibilities
|
||||
|
||||
- Repositories coordinate provider calls for aggregate persistence.
|
||||
- Cache invalidation policy is owned by DAL.
|
||||
- Service layer does not implement persistence or cache invalidation details.
|
||||
|
||||
## Policy
|
||||
|
||||
- Persistence writes must define cache invalidation triggers.
|
||||
- Cache keys and invalidation behavior are centralized in DAL policy definitions.
|
||||
12
docs/dal/provider-boundaries.md
Normal file
12
docs/dal/provider-boundaries.md
Normal file
@ -0,0 +1,12 @@
|
||||
# DAL Provider Boundaries
|
||||
|
||||
## Ownership
|
||||
|
||||
- `IFurnitureDataProvider`: furniture persistence provider boundary.
|
||||
- `ICatalogDataProvider`: catalog persistence provider boundary.
|
||||
|
||||
## Rules
|
||||
|
||||
- Providers encapsulate datastore-specific access.
|
||||
- Providers do not contain orchestration concerns.
|
||||
- Provider contracts are consumed by DAL repositories.
|
||||
8
src/Furniture.DAL/Caching/ICacheInvalidationPolicy.cs
Normal file
8
src/Furniture.DAL/Caching/ICacheInvalidationPolicy.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Furniture.DAL.Caching;
|
||||
|
||||
/// <summary>
|
||||
/// Defines cache invalidation policy boundary for DAL operations.
|
||||
/// </summary>
|
||||
public interface ICacheInvalidationPolicy
|
||||
{
|
||||
}
|
||||
7
src/Furniture.DAL/Furniture.DAL.csproj
Normal file
7
src/Furniture.DAL/Furniture.DAL.csproj
Normal file
@ -0,0 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
8
src/Furniture.DAL/Providers/ICatalogDataProvider.cs
Normal file
8
src/Furniture.DAL/Providers/ICatalogDataProvider.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Furniture.DAL.Providers;
|
||||
|
||||
/// <summary>
|
||||
/// Defines provider access for catalog persistence operations.
|
||||
/// </summary>
|
||||
public interface ICatalogDataProvider
|
||||
{
|
||||
}
|
||||
8
src/Furniture.DAL/Providers/IFurnitureDataProvider.cs
Normal file
8
src/Furniture.DAL/Providers/IFurnitureDataProvider.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Furniture.DAL.Providers;
|
||||
|
||||
/// <summary>
|
||||
/// Defines provider access for furniture persistence operations.
|
||||
/// </summary>
|
||||
public interface IFurnitureDataProvider
|
||||
{
|
||||
}
|
||||
8
src/Furniture.DAL/Repositories/ICatalogRepository.cs
Normal file
8
src/Furniture.DAL/Repositories/ICatalogRepository.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Furniture.DAL.Repositories;
|
||||
|
||||
/// <summary>
|
||||
/// Defines catalog aggregate repository boundary owned by DAL.
|
||||
/// </summary>
|
||||
public interface ICatalogRepository
|
||||
{
|
||||
}
|
||||
8
src/Furniture.DAL/Repositories/IFurnitureRepository.cs
Normal file
8
src/Furniture.DAL/Repositories/IFurnitureRepository.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Furniture.DAL.Repositories;
|
||||
|
||||
/// <summary>
|
||||
/// Defines furniture aggregate repository boundary owned by DAL.
|
||||
/// </summary>
|
||||
public interface IFurnitureRepository
|
||||
{
|
||||
}
|
||||
23
tests/Furniture.DAL.UnitTests/BoundaryShapeTests.cs
Normal file
23
tests/Furniture.DAL.UnitTests/BoundaryShapeTests.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using Furniture.DAL.Caching;
|
||||
using Furniture.DAL.Providers;
|
||||
using Furniture.DAL.Repositories;
|
||||
|
||||
namespace Furniture.DAL.UnitTests;
|
||||
|
||||
public class BoundaryShapeTests
|
||||
{
|
||||
[Fact]
|
||||
public void ProviderBoundaries_WhenReflected_AreInterfaces()
|
||||
{
|
||||
Assert.True(typeof(IFurnitureDataProvider).IsInterface);
|
||||
Assert.True(typeof(ICatalogDataProvider).IsInterface);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RepositoryAndCacheBoundaries_WhenReflected_AreInterfaces()
|
||||
{
|
||||
Assert.True(typeof(IFurnitureRepository).IsInterface);
|
||||
Assert.True(typeof(ICatalogRepository).IsInterface);
|
||||
Assert.True(typeof(ICacheInvalidationPolicy).IsInterface);
|
||||
}
|
||||
}
|
||||
20
tests/Furniture.DAL.UnitTests/Furniture.DAL.UnitTests.csproj
Normal file
20
tests/Furniture.DAL.UnitTests/Furniture.DAL.UnitTests.csproj
Normal file
@ -0,0 +1,20 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.4" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||
<PackageReference Include="xunit" Version="2.9.3" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Using Include="Xunit" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Furniture.DAL\Furniture.DAL.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Loading…
Reference in New Issue
Block a user