Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/new project structure #28

Merged
merged 19 commits into from
Feb 12, 2022
8 changes: 6 additions & 2 deletions .github/workflows/publish-nuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ name: Build and publish package
# events but only for the master branch
on:
push:
branches: [ master ]
tags:
- '*.*.*'

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
Expand All @@ -20,6 +21,9 @@ jobs:
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.100'

- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV

- name: Build project
run: dotnet build --configuration Release
Expand All @@ -28,7 +32,7 @@ jobs:
run: dotnet test --filter "Category=UnitTest"

- name: Generate a NuGet package
run: dotnet pack --no-build -c Release -o .
run: dotnet pack -p:PackageVersion=${{env.RELEASE_VERSION}} --no-build -c Release -o .

- name: Push to GitHub package registry
run: dotnet nuget push "*.nupkg" -k ${{secrets.NUGETORGTOKEN}} -s https://api.nuget.org/v3/index.json --skip-duplicate
16 changes: 0 additions & 16 deletions src/Laraue.EfCoreTriggers.Common/Converters/AvailableConverters.cs

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using Laraue.EfCoreTriggers.Common.Services;
using Laraue.EfCoreTriggers.Common.Services.Impl.ExpressionVisitors;
using Laraue.EfCoreTriggers.Common.SqlGeneration;
using Laraue.EfCoreTriggers.Common.TriggerBuilders;

namespace Laraue.EfCoreTriggers.Common.Converters.MethodCall
{
/// <summary>
/// Base <see cref="IMethodCallVisitor"/>.
/// </summary>
public abstract class BaseMethodCallVisitor : IMethodCallVisitor
{
/// <summary>
/// Specifies a method which will be handled by this converter.
/// </summary>
protected abstract string MethodName { get; }

/// <summary>
/// Specifies a class which methods will be handled by this converter.
/// </summary>
protected abstract Type ReflectedType { get; }

/// <summary>
/// Factory to visit expressions and generate SQL code.
/// </summary>
protected IExpressionVisitorFactory VisitorFactory { get; }

/// <summary>
/// Initialize a new instance of <see cref="BaseMethodCallVisitor"/>.
/// </summary>
/// <param name="visitorFactory"></param>
protected BaseMethodCallVisitor(IExpressionVisitorFactory visitorFactory)
{
VisitorFactory = visitorFactory;
}

/// <inheritdoc />
public bool IsApplicable(MethodCallExpression expression)
{
return expression.Method.ReflectedType == ReflectedType && MethodName == expression.Method.Name;
}

/// <inheritdoc />
public abstract SqlBuilder Visit(
MethodCallExpression expression,
ArgumentTypes argumentTypes,
VisitedMembers visitedMembers);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Linq.Expressions;
using Laraue.EfCoreTriggers.Common.Services;
using Laraue.EfCoreTriggers.Common.SqlGeneration;
using Laraue.EfCoreTriggers.Common.TriggerBuilders;

Expand All @@ -8,7 +8,7 @@ namespace Laraue.EfCoreTriggers.Common.Converters.MethodCall
/// <summary>
/// Converter for <see cref="MethodCallExpression"/>.
/// </summary>
public interface IMethodCallConverter
public interface IMethodCallVisitor
{
/// <summary>
/// Should this converter be used to translate a <see cref="MethodCallExpression"/> to a SQL.
Expand All @@ -20,10 +20,13 @@ public interface IMethodCallConverter
/// <summary>
/// Build a SQL for passed <see cref="MethodCallExpression"/>.
/// </summary>
/// <param name="provider">Provider to build parts of SQL.</param>
/// <param name="expression">Expression to parse.</param>
/// <param name="argumentTypes">Argument types of the expression.</param>
/// <param name="visitedMembers">Visited members.</param>
/// <returns></returns>
SqlBuilder BuildSql(BaseExpressionProvider provider, MethodCallExpression expression, Dictionary<string, ArgumentType> argumentTypes);
SqlBuilder Visit(
MethodCallExpression expression,
ArgumentTypes argumentTypes,
VisitedMembers visitedMembers);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Laraue.EfCoreTriggers.Common.SqlGeneration;
using Laraue.EfCoreTriggers.Common.TriggerBuilders;
using System.Collections.Generic;
using System.Linq.Expressions;
using Laraue.EfCoreTriggers.Common.Services;
using Laraue.EfCoreTriggers.Common.Services.Impl.ExpressionVisitors;

namespace Laraue.EfCoreTriggers.Common.Converters.MethodCall.Math.Abs
{
/// <summary>
/// Visitor for all Abs methods, such as <see cref="System.Math.Abs(decimal)"/>,
/// <see cref="System.Math.Abs(sbyte)"/> etc.
/// </summary>
public class MathAbsVisitor : BaseMathVisitor
{
/// <inheritdoc />
protected override string MethodName => nameof(System.Math.Abs);

/// <inheritdoc />
public MathAbsVisitor(IExpressionVisitorFactory visitorFactory)
: base(visitorFactory)
{
}

/// <inheritdoc />
public override SqlBuilder Visit(MethodCallExpression expression, ArgumentTypes argumentTypes, VisitedMembers visitedMembers)
{
var argument = expression.Arguments[0];
var sqlBuilder = VisitorFactory.Visit(argument, argumentTypes, visitedMembers);
return SqlBuilder.FromString($"ABS({sqlBuilder})");
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Laraue.EfCoreTriggers.Common.SqlGeneration;
using Laraue.EfCoreTriggers.Common.TriggerBuilders;
using System.Collections.Generic;
using System.Linq.Expressions;
using Laraue.EfCoreTriggers.Common.Services;
using Laraue.EfCoreTriggers.Common.Services.Impl.ExpressionVisitors;

namespace Laraue.EfCoreTriggers.Common.Converters.MethodCall.Math.Acos
{
/// <summary>
/// Visitor for <see cref="System.Math.Acos"/> method.
/// </summary>
public class MathAcosVisitor : BaseMathVisitor
{
/// <inheritdoc />
protected override string MethodName => nameof(System.Math.Acos);

/// <inheritdoc />
public MathAcosVisitor(IExpressionVisitorFactory visitorFactory)
: base(visitorFactory)
{
}

/// <inheritdoc />
public override SqlBuilder Visit(
MethodCallExpression expression,
ArgumentTypes argumentTypes,
VisitedMembers visitedMembers)
{
var argument = expression.Arguments[0];
var sqlBuilder = VisitorFactory.Visit(argument, argumentTypes, visitedMembers);
return SqlBuilder.FromString($"ACOS({sqlBuilder})");
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Laraue.EfCoreTriggers.Common.SqlGeneration;
using Laraue.EfCoreTriggers.Common.TriggerBuilders;
using System.Collections.Generic;
using System.Linq.Expressions;
using Laraue.EfCoreTriggers.Common.Services;
using Laraue.EfCoreTriggers.Common.Services.Impl.ExpressionVisitors;

namespace Laraue.EfCoreTriggers.Common.Converters.MethodCall.Math.Asin
{
/// <summary>
/// Visitor for <see cref="System.Math.Asin"/> method.
/// </summary>
public class MathAsinVisitor : BaseMathVisitor
{
/// <inheritdoc />
protected override string MethodName => nameof(System.Math.Asin);

/// <inheritdoc />
public MathAsinVisitor(IExpressionVisitorFactory visitorFactory)
: base(visitorFactory)
{
}

/// <inheritdoc />
public override SqlBuilder Visit(
MethodCallExpression expression,
ArgumentTypes argumentTypes,
VisitedMembers visitedMembers)
{
var argument = expression.Arguments[0];
var sqlBuilder = VisitorFactory.Visit(argument, argumentTypes, visitedMembers);
return SqlBuilder.FromString($"ASIN({sqlBuilder})");
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Laraue.EfCoreTriggers.Common.SqlGeneration;
using Laraue.EfCoreTriggers.Common.TriggerBuilders;
using System.Collections.Generic;
using System.Linq.Expressions;
using Laraue.EfCoreTriggers.Common.Services;
using Laraue.EfCoreTriggers.Common.Services.Impl.ExpressionVisitors;

namespace Laraue.EfCoreTriggers.Common.Converters.MethodCall.Math.Atan
{
/// <summary>
/// Visitor for <see cref="System.Math.Atan"/> method.
/// </summary>
public class MathAtanVisitor : BaseMathVisitor
{
/// <inheritdoc />
protected override string MethodName => nameof(System.Math.Atan);

/// <inheritdoc />
public MathAtanVisitor(IExpressionVisitorFactory visitorFactory)
: base(visitorFactory)
{
}

/// <inheritdoc />
public override SqlBuilder Visit(
MethodCallExpression expression,
ArgumentTypes argumentTypes,
VisitedMembers visitedMembers)
{
var argument = expression.Arguments[0];
var sqlBuilder = VisitorFactory.Visit(argument, argumentTypes, visitedMembers);
return SqlBuilder.FromString($"ATAN({sqlBuilder})");
}
}
}

This file was deleted.

Loading