using System;
using System.Collections.Generic;
using System.Linq;
using LinqToDB.Data;
using NuClear.ValidationRules.Storage.Model.Facts;
using NUnit.Framework;
using Version = NuClear.ValidationRules.Storage.Model.Messages.Version;

namespace ValidationRules.Replication.DatabaseComparison.Tests.DataReaders
{
    internal abstract class IgnoreEntityType<T> : IDataObjectReader<T>
    {
        public IQueryable<T> ReadDest(DataConnection db)
            => throw new InconclusiveException("Entity check is intentionally suppressed.");

        public IQueryable<T> ReadSource(DataConnection db, IEnumerable<Type> accessorTypes)
            => throw new InconclusiveException("Entity check is intentionally suppressed.");
    }

    internal sealed class IgnoreEntityName : IgnoreEntityType<EntityName>
    {
    }

    internal sealed class IgnoreVersion : IgnoreEntityType<Version>
    {
    }

    internal sealed class IgnoreErmState : IgnoreEntityType<Version.ErmState>
    {
    }
}
