Give tests access to internal implementations for Connected.Data

develop
Matija Koželj 2 years ago
parent 08e5857fc8
commit e35dc32284

@ -1,4 +1,5 @@
using Connected.Annotations;
using System.Runtime.CompilerServices;
using Connected.Annotations;
using Connected.Data.DataProtection;
using Connected.Data.Schema;
using Connected.Data.Sharding;
@ -7,6 +8,7 @@ using Connected.Entities.Storage;
using Microsoft.Extensions.DependencyInjection;
[assembly: MicroService(MicroServiceType.Sys)]
[assembly: InternalsVisibleTo("Connected.Data.Tests")]
namespace Connected.Data;

@ -3,44 +3,67 @@ using Connected.Expressions.Formatters;
using Connected.Expressions.Translation;
using System.Collections.ObjectModel;
using System.Linq.Expressions;
using System.Runtime.ExceptionServices;
namespace Connected.Expressions;
public sealed class SelectExpression : AliasedExpression
{
public SelectExpression(Alias alias, IEnumerable<ColumnDeclaration> columns, Expression from, Expression? where,
IEnumerable<OrderExpression>? orderBy, IEnumerable<Expression>? groupBy, bool isDistinct, Expression? skip, Expression? take, bool isReverse)
: base(DatabaseExpressionType.Select, typeof(void), alias)
{
Columns = columns.ToReadOnly();
IsDistinct = isDistinct;
From = from;
Where = where;
OrderBy = orderBy?.ToReadOnly();
GroupBy = groupBy?.ToReadOnly();
Take = take;
Skip = skip;
IsReverse = isReverse;
}
public SelectExpression(Alias alias, IEnumerable<ColumnDeclaration> columns, Expression from, Expression? where, IEnumerable<OrderExpression>? orderBy, IEnumerable<Expression>? groupBy)
: this(alias, columns, from, where, orderBy, groupBy, false, null, null, false)
{
}
public SelectExpression(Alias alias, IEnumerable<ColumnDeclaration> columns, Expression from, Expression? where)
: this(alias, columns, from, where, null, null)
{
}
public ReadOnlyCollection<ColumnDeclaration> Columns { get; }
public Expression From { get; }
public Expression? Where { get; }
public ReadOnlyCollection<OrderExpression>? OrderBy { get; }
public ReadOnlyCollection<Expression>? GroupBy { get; }
public bool IsDistinct { get; }
public Expression? Skip { get; }
public Expression? Take { get; }
public bool IsReverse { get; }
public string QueryText => SqlFormatter.Format(this);
public SelectExpression(Alias alias, IEnumerable<ColumnDeclaration> columns, Expression from, Expression? where,
IEnumerable<OrderExpression>? orderBy, IEnumerable<Expression>? groupBy, bool isDistinct, Expression? skip, Expression? take, bool isReverse)
: base(DatabaseExpressionType.Select, typeof(void), alias)
{
Columns = columns.ToReadOnly();
IsDistinct = isDistinct;
From = from;
Where = where;
OrderBy = orderBy?.ToReadOnly();
GroupBy = groupBy?.ToReadOnly();
Take = take;
Skip = skip;
IsReverse = isReverse;
}
public SelectExpression(Alias alias, IEnumerable<ColumnDeclaration> columns, Expression from, Expression? where, IEnumerable<OrderExpression>? orderBy, IEnumerable<Expression>? groupBy)
: this(alias, columns, from, where, orderBy, groupBy, false, null, null, false)
{
}
public SelectExpression(Alias alias, IEnumerable<ColumnDeclaration> columns, Expression from, Expression? where)
: this(alias, columns, from, where, null, null)
{
}
public ReadOnlyCollection<ColumnDeclaration> Columns { get; }
public Expression From { get; }
public Expression? Where { get; }
public ReadOnlyCollection<OrderExpression>? OrderBy { get; }
public ReadOnlyCollection<Expression>? GroupBy { get; }
public bool IsDistinct { get; }
public Expression? Skip { get; }
public Expression? Take { get; }
public bool IsReverse { get; }
public string QueryText => SqlFormatter.Format(this);
public override int GetHashCode()
{
return HashCode.Combine(HashCode.Combine(Alias, Columns, From, Where, OrderBy), GroupBy, IsDistinct, Skip, Take, IsReverse);
}
public override bool Equals(object? obj)
{
if (obj is not SelectExpression second)
return false;
return Alias.Equals(second.Alias)
&& Columns.Equals(second.Columns)
&& From.Equals(second.From)
&& Where == second.Where
&& OrderBy == second.OrderBy
&& GroupBy == second.GroupBy
&& IsDistinct == second.IsDistinct
&& Skip == second.Skip
&& Take == second.Take
&& IsReverse == second.IsReverse;
}
}
Loading…
Cancel
Save