Initial commit: JDE Scoping Tool migration project

Set up repository with legacy .NET Framework 4.8 source (OLD/),
new .NET 10 Blazor solution (NEW/), OpenSpec specifications,
documentation, and project configuration.
This commit is contained in:
Joseph Doherty
2026-01-02 07:43:29 -05:00
commit 26ff8d9b4f
1761 changed files with 596509 additions and 0 deletions
@@ -0,0 +1,56 @@
using JdeScoping.Core.Models.Infrastructure;
namespace JdeScoping.Core.Interfaces;
/// <summary>
/// Data sync operations for LotFinder SQL Server cache database.
/// </summary>
public partial interface ILotFinderRepository
{
/// <summary>
/// Gets the latest data update record per table/type combination.
/// </summary>
/// <param name="ct">Cancellation token.</param>
/// <returns>Latest data updates.</returns>
Task<List<DataUpdate>> GetLastDataUpdatesAsync(CancellationToken ct = default);
/// <summary>
/// Gets table schema specification for dynamic SQL generation.
/// </summary>
/// <param name="tableName">Table name.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns>Table specification with columns and primary key.</returns>
Task<TableSpec> GetTableSpecAsync(string tableName, CancellationToken ct = default);
/// <summary>
/// Rebuilds all indices on a table with fillfactor of 95.
/// Table name is validated against whitelist for SQL injection prevention.
/// </summary>
/// <param name="tableName">Table name (must be in whitelist).</param>
/// <param name="ct">Cancellation token.</param>
/// <exception cref="ArgumentException">Thrown if table name is not in whitelist.</exception>
Task RebuildIndicesAsync(string tableName, CancellationToken ct = default);
/// <summary>
/// Post-processes imported MIS data to set obsolete dates.
/// </summary>
/// <param name="ct">Cancellation token.</param>
Task PostProcessMisDataAsync(CancellationToken ct = default);
/// <summary>
/// Performs bulk insert of records into a table.
/// </summary>
/// <typeparam name="T">Record type.</typeparam>
/// <param name="tableName">Target table name.</param>
/// <param name="records">Records to insert.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns>Number of records inserted.</returns>
Task<int> BulkInsertAsync<T>(string tableName, IEnumerable<T> records, CancellationToken ct = default);
/// <summary>
/// Truncates a table, removing all records.
/// </summary>
/// <param name="tableName">Table name.</param>
/// <param name="ct">Cancellation token.</param>
Task TruncateTableAsync(string tableName, CancellationToken ct = default);
}