namespace Campaign_Tracker.Server.LegacyData.Schema;
///
/// Categorisation of a structural delta detected by the compatibility check
/// (Story 1.7 AC #2). Used in entries.
///
public enum LegacySchemaChangeType
{
TableMissing,
TableAdded,
ColumnMissing,
ColumnAdded,
ColumnTypeChanged,
ColumnSizeChanged,
ColumnNullabilityChanged,
ColumnConstraintsChanged,
}
///
/// One structural delta entry between baseline and live schema.
/// is null for table-level drift entries.
///
public sealed record LegacySchemaDrift(
string TableName,
string? ColumnName,
LegacySchemaChangeType ChangeType,
string Detail);
///
/// Outcome of a compatibility check run.
/// AC #2: failure includes structured drift list identifying table, column, and change type.
/// AC #3: pass returns timestamp, count of tables verified, and zero drift count.
///
public sealed record LegacySchemaCheckResult(
bool Passed,
int TablesVerified,
int DriftCount,
DateTimeOffset CheckedAt,
IReadOnlyList Drifts,
string BaselineSource);