Skip to content

Commit

Permalink
Ran dotnet format
Browse files Browse the repository at this point in the history
  • Loading branch information
niemyjski committed Sep 4, 2024
1 parent 2a5a091 commit 149519d
Show file tree
Hide file tree
Showing 8 changed files with 108 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public override void Visit(TermNode node, IQueryVisitorContext context)
node.SetOperationType(node.Field);
node.Field = node.Term;
node.Term = null;
}
}
}

public static class AggregationType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,8 @@ private static void AppendField(StringBuilder builder, EntityFieldInfo field, st

builder.Append(".");

var method = term[^1..] switch {
var method = term[^1..] switch
{
"y" => "AddYears",
"M" => "AddMonths",
"d" => "AddDays",
Expand Down
19 changes: 13 additions & 6 deletions src/Foundatio.Parsers.SqlQueries/SqlQueryParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,28 @@

namespace Foundatio.Parsers.SqlQueries;

public class SqlQueryParser : LuceneQueryParser {
public SqlQueryParser(Action<SqlQueryParserConfiguration> configure = null) {
public class SqlQueryParser : LuceneQueryParser
{
public SqlQueryParser(Action<SqlQueryParserConfiguration> configure = null)
{
var config = new SqlQueryParserConfiguration();
configure?.Invoke(config);
Configuration = config;
}

public SqlQueryParserConfiguration Configuration { get; }

public override async Task<IQueryNode> ParseAsync(string query, IQueryVisitorContext context = null) {
public override async Task<IQueryNode> ParseAsync(string query, IQueryVisitorContext context = null)
{
query ??= String.Empty;
context ??= new SqlQueryVisitorContext();

SetupQueryVisitorContextDefaults(context);
try {
try
{
var result = await base.ParseAsync(query, context).ConfigureAwait(false);
switch (context.QueryType) {
switch (context.QueryType)
{
case QueryTypes.Aggregation:
result = await Configuration.AggregationVisitor.AcceptAsync(result, context).ConfigureAwait(false);
break;
Expand All @@ -44,7 +49,9 @@ public override async Task<IQueryNode> ParseAsync(string query, IQueryVisitorCon
}

return result;
} catch (FormatException ex) {
}
catch (FormatException ex)
{
var cursor = ex.Data["cursor"] as Cursor;
context.GetValidationResult().QueryType = context.QueryType;
context.AddValidationError(ex.Message, cursor.Column);
Expand Down
102 changes: 68 additions & 34 deletions src/Foundatio.Parsers.SqlQueries/SqlQueryParserConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@

namespace Foundatio.Parsers.SqlQueries;

public class SqlQueryParserConfiguration {
public class SqlQueryParserConfiguration
{
private ILogger _logger = NullLogger.Instance;

public SqlQueryParserConfiguration() {
public SqlQueryParserConfiguration()
{
AddSortVisitor(new TermToFieldVisitor(), 0);
AddVisitor(new FieldResolverQueryVisitor((field, context) => FieldResolver != null ? FieldResolver(field, context) : Task.FromResult<string>(null)), 10);
AddVisitor(new ValidationVisitor(), 30);
Expand All @@ -32,106 +34,123 @@ public SqlQueryParserConfiguration() {
public ChainedQueryVisitor QueryVisitor { get; } = new();
public ChainedQueryVisitor AggregationVisitor { get; } = new();

public SqlQueryParserConfiguration SetLoggerFactory(ILoggerFactory loggerFactory) {
public SqlQueryParserConfiguration SetLoggerFactory(ILoggerFactory loggerFactory)
{
LoggerFactory = loggerFactory ?? NullLoggerFactory.Instance;
_logger = loggerFactory.CreateLogger<SqlQueryParserConfiguration>();

return this;
}

public SqlQueryParserConfiguration SetDefaultFields(string[] fields) {
public SqlQueryParserConfiguration SetDefaultFields(string[] fields)
{
DefaultFields = fields;
return this;
}

public SqlQueryParserConfiguration SetFieldDepth(int maxFieldDepth) {
public SqlQueryParserConfiguration SetFieldDepth(int maxFieldDepth)
{
MaxFieldDepth = maxFieldDepth;
return this;
}

public SqlQueryParserConfiguration UseEntityTypePropertyFilter(EntityTypePropertyFilter filter) {
public SqlQueryParserConfiguration UseEntityTypePropertyFilter(EntityTypePropertyFilter filter)
{
EntityTypePropertyFilter = filter;
return this;
}

public SqlQueryParserConfiguration UseEntityTypeNavigationFilter(EntityTypeNavigationFilter filter) {
public SqlQueryParserConfiguration UseEntityTypeNavigationFilter(EntityTypeNavigationFilter filter)
{
EntityTypeNavigationFilter = filter;
return this;
}

public SqlQueryParserConfiguration UseEntityTypeSkipNavigationFilter(EntityTypeSkipNavigationFilter filter) {
public SqlQueryParserConfiguration UseEntityTypeSkipNavigationFilter(EntityTypeSkipNavigationFilter filter)
{
EntityTypeSkipNavigationFilter = filter;
return this;
}

public SqlQueryParserConfiguration UseFieldResolver(QueryFieldResolver resolver, int priority = 10) {
public SqlQueryParserConfiguration UseFieldResolver(QueryFieldResolver resolver, int priority = 10)
{
FieldResolver = resolver;
ReplaceVisitor<FieldResolverQueryVisitor>(new FieldResolverQueryVisitor(resolver), priority);

return this;
}

public SqlQueryParserConfiguration UseFieldMap(IDictionary<string, string> fields, int priority = 10) {
public SqlQueryParserConfiguration UseFieldMap(IDictionary<string, string> fields, int priority = 10)
{
if (fields != null)
return UseFieldResolver(fields.ToHierarchicalFieldResolver(), priority);

return UseFieldResolver(null);
}

public SqlQueryParserConfiguration UseIncludes(IncludeResolver includeResolver, ShouldSkipIncludeFunc shouldSkipInclude = null, string includeName = "include", int priority = 0) {
public SqlQueryParserConfiguration UseIncludes(IncludeResolver includeResolver, ShouldSkipIncludeFunc shouldSkipInclude = null, string includeName = "include", int priority = 0)
{
IncludeResolver = includeResolver;

return AddVisitor(new IncludeVisitor(shouldSkipInclude, includeName), priority);
}

public SqlQueryParserConfiguration UseIncludes(Func<string, string> resolveInclude, ShouldSkipIncludeFunc shouldSkipInclude = null, string includeName = "include", int priority = 0) {
public SqlQueryParserConfiguration UseIncludes(Func<string, string> resolveInclude, ShouldSkipIncludeFunc shouldSkipInclude = null, string includeName = "include", int priority = 0)
{
return UseIncludes(name => Task.FromResult(resolveInclude(name)), shouldSkipInclude, includeName, priority);
}

public SqlQueryParserConfiguration UseIncludes(IDictionary<string, string> includes, ShouldSkipIncludeFunc shouldSkipInclude = null, string includeName = "include", int priority = 0) {
public SqlQueryParserConfiguration UseIncludes(IDictionary<string, string> includes, ShouldSkipIncludeFunc shouldSkipInclude = null, string includeName = "include", int priority = 0)
{
return UseIncludes(name => includes.ContainsKey(name) ? includes[name] : null, shouldSkipInclude, includeName, priority);
}

public SqlQueryParserConfiguration SetValidationOptions(QueryValidationOptions options) {
public SqlQueryParserConfiguration SetValidationOptions(QueryValidationOptions options)
{
ValidationOptions = options;
return this;
}

#region Combined Visitor Management

public SqlQueryParserConfiguration AddVisitor(IChainableQueryVisitor visitor, int priority = 0) {
public SqlQueryParserConfiguration AddVisitor(IChainableQueryVisitor visitor, int priority = 0)
{
QueryVisitor.AddVisitor(visitor, priority);
AggregationVisitor.AddVisitor(visitor, priority);
SortVisitor.AddVisitor(visitor, priority);

return this;
}

public SqlQueryParserConfiguration RemoveVisitor<T>() where T : IChainableQueryVisitor {
public SqlQueryParserConfiguration RemoveVisitor<T>() where T : IChainableQueryVisitor
{
QueryVisitor.RemoveVisitor<T>();
AggregationVisitor.RemoveVisitor<T>();
SortVisitor.RemoveVisitor<T>();

return this;
}

public SqlQueryParserConfiguration ReplaceVisitor<T>(IChainableQueryVisitor visitor, int? newPriority = null) where T : IChainableQueryVisitor {
public SqlQueryParserConfiguration ReplaceVisitor<T>(IChainableQueryVisitor visitor, int? newPriority = null) where T : IChainableQueryVisitor
{
QueryVisitor.ReplaceVisitor<T>(visitor, newPriority);
AggregationVisitor.ReplaceVisitor<T>(visitor, newPriority);
SortVisitor.ReplaceVisitor<T>(visitor, newPriority);

return this;
}

public SqlQueryParserConfiguration AddVisitorBefore<T>(IChainableQueryVisitor visitor) {
public SqlQueryParserConfiguration AddVisitorBefore<T>(IChainableQueryVisitor visitor)
{
QueryVisitor.AddVisitorBefore<T>(visitor);
AggregationVisitor.AddVisitorBefore<T>(visitor);
SortVisitor.AddVisitorBefore<T>(visitor);

return this;
}

public SqlQueryParserConfiguration AddVisitorAfter<T>(IChainableQueryVisitor visitor) {
public SqlQueryParserConfiguration AddVisitorAfter<T>(IChainableQueryVisitor visitor)
{
QueryVisitor.AddVisitorAfter<T>(visitor);
AggregationVisitor.AddVisitorAfter<T>(visitor);
SortVisitor.AddVisitorAfter<T>(visitor);
Expand All @@ -143,31 +162,36 @@ public SqlQueryParserConfiguration AddVisitorAfter<T>(IChainableQueryVisitor vis

#region Query Visitor Management

public SqlQueryParserConfiguration AddQueryVisitor(IChainableQueryVisitor visitor, int priority = 0) {
public SqlQueryParserConfiguration AddQueryVisitor(IChainableQueryVisitor visitor, int priority = 0)
{
QueryVisitor.AddVisitor(visitor, priority);

return this;
}

public SqlQueryParserConfiguration RemoveQueryVisitor<T>() where T : IChainableQueryVisitor {
public SqlQueryParserConfiguration RemoveQueryVisitor<T>() where T : IChainableQueryVisitor
{
QueryVisitor.RemoveVisitor<T>();

return this;
}

public SqlQueryParserConfiguration ReplaceQueryVisitor<T>(IChainableQueryVisitor visitor, int? newPriority = null) where T : IChainableQueryVisitor {
public SqlQueryParserConfiguration ReplaceQueryVisitor<T>(IChainableQueryVisitor visitor, int? newPriority = null) where T : IChainableQueryVisitor
{
QueryVisitor.ReplaceVisitor<T>(visitor, newPriority);

return this;
}

public SqlQueryParserConfiguration AddQueryVisitorBefore<T>(IChainableQueryVisitor visitor) {
public SqlQueryParserConfiguration AddQueryVisitorBefore<T>(IChainableQueryVisitor visitor)
{
QueryVisitor.AddVisitorBefore<T>(visitor);

return this;
}

public SqlQueryParserConfiguration AddQueryVisitorAfter<T>(IChainableQueryVisitor visitor) {
public SqlQueryParserConfiguration AddQueryVisitorAfter<T>(IChainableQueryVisitor visitor)
{
QueryVisitor.AddVisitorAfter<T>(visitor);

return this;
Expand All @@ -177,31 +201,36 @@ public SqlQueryParserConfiguration AddQueryVisitorAfter<T>(IChainableQueryVisito

#region Sort Visitor Management

public SqlQueryParserConfiguration AddSortVisitor(IChainableQueryVisitor visitor, int priority = 0) {
public SqlQueryParserConfiguration AddSortVisitor(IChainableQueryVisitor visitor, int priority = 0)
{
SortVisitor.AddVisitor(visitor, priority);

return this;
}

public SqlQueryParserConfiguration RemoveSortVisitor<T>() where T : IChainableQueryVisitor {
public SqlQueryParserConfiguration RemoveSortVisitor<T>() where T : IChainableQueryVisitor
{
SortVisitor.RemoveVisitor<T>();

return this;
}

public SqlQueryParserConfiguration ReplaceSortVisitor<T>(IChainableQueryVisitor visitor, int? newPriority = null) where T : IChainableQueryVisitor {
public SqlQueryParserConfiguration ReplaceSortVisitor<T>(IChainableQueryVisitor visitor, int? newPriority = null) where T : IChainableQueryVisitor
{
SortVisitor.ReplaceVisitor<T>(visitor, newPriority);

return this;
}

public SqlQueryParserConfiguration AddSortVisitorBefore<T>(IChainableQueryVisitor visitor) {
public SqlQueryParserConfiguration AddSortVisitorBefore<T>(IChainableQueryVisitor visitor)
{
SortVisitor.AddVisitorBefore<T>(visitor);

return this;
}

public SqlQueryParserConfiguration AddSortVisitorAfter<T>(IChainableQueryVisitor visitor) {
public SqlQueryParserConfiguration AddSortVisitorAfter<T>(IChainableQueryVisitor visitor)
{
SortVisitor.AddVisitorAfter<T>(visitor);

return this;
Expand All @@ -211,31 +240,36 @@ public SqlQueryParserConfiguration AddSortVisitorAfter<T>(IChainableQueryVisitor

#region Aggregation Visitor Management

public SqlQueryParserConfiguration AddAggregationVisitor(IChainableQueryVisitor visitor, int priority = 0) {
public SqlQueryParserConfiguration AddAggregationVisitor(IChainableQueryVisitor visitor, int priority = 0)
{
AggregationVisitor.AddVisitor(visitor, priority);

return this;
}

public SqlQueryParserConfiguration RemoveAggregationVisitor<T>() where T : IChainableQueryVisitor {
public SqlQueryParserConfiguration RemoveAggregationVisitor<T>() where T : IChainableQueryVisitor
{
AggregationVisitor.RemoveVisitor<T>();

return this;
}

public SqlQueryParserConfiguration ReplaceAggregationVisitor<T>(IChainableQueryVisitor visitor, int? newPriority = null) where T : IChainableQueryVisitor {
public SqlQueryParserConfiguration ReplaceAggregationVisitor<T>(IChainableQueryVisitor visitor, int? newPriority = null) where T : IChainableQueryVisitor
{
AggregationVisitor.ReplaceVisitor<T>(visitor, newPriority);

return this;
}

public SqlQueryParserConfiguration AddAggregationVisitorBefore<T>(IChainableQueryVisitor visitor) {
public SqlQueryParserConfiguration AddAggregationVisitorBefore<T>(IChainableQueryVisitor visitor)
{
AggregationVisitor.AddVisitorBefore<T>(visitor);

return this;
}

public SqlQueryParserConfiguration AddAggregationVisitorAfter<T>(IChainableQueryVisitor visitor) {
public SqlQueryParserConfiguration AddAggregationVisitorAfter<T>(IChainableQueryVisitor visitor)
{
AggregationVisitor.AddVisitorAfter<T>(visitor);

return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

namespace Foundatio.Parsers.SqlQueries.Visitors;

public interface ISqlQueryVisitorContext : IQueryVisitorContext {
public interface ISqlQueryVisitorContext : IQueryVisitorContext
{
List<EntityFieldInfo> Fields { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

namespace Foundatio.Parsers.SqlQueries.Visitors;

public class SqlQueryVisitorContext : QueryVisitorContext, ISqlQueryVisitorContext {
public class SqlQueryVisitorContext : QueryVisitorContext, ISqlQueryVisitorContext
{
public List<EntityFieldInfo> Fields { get; set; }
public IEntityType EntityType { get; set; }
}
Expand Down
Loading

0 comments on commit 149519d

Please sign in to comment.