ec4c8fab87
Move configuration options from Core/DataAccess/DataSync/ExcelIO to dedicated Options folders within each project for better organization. Update all references and tests accordingly.
4.2 KiB
4.2 KiB
Options Classes Relocation Design
Summary
Move options classes from Core project to the projects that use them, establishing an Options/ folder convention across all projects.
Current State
All 7 options classes live in JdeScoping.Core/Options/:
AuthOptions- used by Api + InfrastructureDataSourceOptions- used by InfrastructureDataSyncOptions- duplicate (real one in DataSync)ExcelExportOptions- duplicate (real one in ExcelIO)LdapOptions- used by InfrastructureSearchOptions- unused (future use in DataAccess)SearchProcessingOptions- used by DataAccess
Target State
Folder Structure
src/
├── JdeScoping.Api/
│ └── Options/
│ └── AuthOptions.cs
├── JdeScoping.DataAccess/
│ └── Options/
│ ├── SearchOptions.cs
│ └── SearchProcessingOptions.cs
├── JdeScoping.Infrastructure/
│ └── Options/
│ ├── DataSourceOptions.cs
│ └── LdapOptions.cs
├── JdeScoping.DataSync/
│ └── Options/ # Renamed from Configuration/
│ └── DataSyncOptions.cs
├── JdeScoping.ExcelIO/
│ └── Options/ # Renamed from Configuration/
│ └── ExcelExportOptions.cs
└── JdeScoping.Core/
└── (Options folder deleted)
Property Moves
LdapOptions gains properties from AuthOptions:
UseFakeAuth(bool, default: false)AdminBypassUsers(string[], default: [])
AuthOptions loses those properties, keeping only:
CookieName(string, default: "ScopingTool.Auth")CookieExpirationMinutes(int, default: 480)
Namespace Changes
| Old Namespace | New Namespace |
|---|---|
JdeScoping.Core.Options.AuthOptions |
JdeScoping.Api.Options.AuthOptions |
JdeScoping.Core.Options.SearchOptions |
JdeScoping.DataAccess.Options.SearchOptions |
JdeScoping.Core.Options.SearchProcessingOptions |
JdeScoping.DataAccess.Options.SearchProcessingOptions |
JdeScoping.Core.Options.DataSourceOptions |
JdeScoping.Infrastructure.Options.DataSourceOptions |
JdeScoping.Core.Options.LdapOptions |
JdeScoping.Infrastructure.Options.LdapOptions |
JdeScoping.DataSync.Configuration.* |
JdeScoping.DataSync.Options.* |
JdeScoping.ExcelIO.Configuration.* |
JdeScoping.ExcelIO.Options.* |
DI Registration Changes
Infrastructure/DependencyInjection.cs:
- Remove
AuthOptionsregistration - Change
authOptions?.UseFakeAuthcheck to useldapOptions?.UseFakeAuth
Api/DependencyInjection.cs:
- Add
AuthOptionsregistration
Configuration (appsettings.json)
Move settings from "Auth" to "Ldap" section:
{
"Ldap": {
"ServerUrls": ["ldap.corp.example.com"],
"GroupDn": "CN=ScopingTool-Users,OU=Groups,DC=corp,DC=example,DC=com",
"SearchBase": "DC=corp,DC=example,DC=com",
"ConnectionTimeoutSeconds": 30,
"UseFakeAuth": false,
"AdminBypassUsers": []
},
"Auth": {
"CookieName": "ScopingTool.Auth",
"CookieExpirationMinutes": 480
}
}
Files to Delete
src/JdeScoping.Core/Options/AuthOptions.cssrc/JdeScoping.Core/Options/DataSourceOptions.cssrc/JdeScoping.Core/Options/DataSyncOptions.cssrc/JdeScoping.Core/Options/ExcelExportOptions.cssrc/JdeScoping.Core/Options/LdapOptions.cssrc/JdeScoping.Core/Options/SearchOptions.cssrc/JdeScoping.Core/Options/SearchProcessingOptions.cssrc/JdeScoping.Core/Options/(folder)
Files to Update
Host/Program.cs- update using statementsInfrastructure/DependencyInjection.cs- remove AuthOptions, use LdapOptions for UseFakeAuthInfrastructure/Auth/LdapAuthService.cs- update using, use LdapOptions for AdminBypassUsersApi/DependencyInjection.cs- add AuthOptions registrationDataAccess/DependencyInjection.cs- update using statementsDataSync/**- rename Configuration namespace to OptionsExcelIO/**- rename Configuration namespace to Optionsappsettings.json- move UseFakeAuth/AdminBypassUsers to Ldap section