namespace Campaign_Tracker.Server.ExtensionData; public interface IExtensionRecordStore { Task SaveAsync( ExtensionRecordDraft draft, CancellationToken cancellationToken = default); Task> GetAllAsync(CancellationToken cancellationToken = default); } public sealed record ExtensionRecordDraft( string RecordType, string RecordId, LegacyLinkReference LegacyLink); public sealed record ExtensionRecordSaveResult( bool Saved, string? Error, ILegacyLinkedRecord? Record) { public static ExtensionRecordSaveResult Success(ILegacyLinkedRecord record) => new(true, null, record); public static ExtensionRecordSaveResult Failure(string error) => new(false, error, null); }