Skip to content

Commit

Permalink
Fixed SQLQueryCompiler extensions.
Browse files Browse the repository at this point in the history
  • Loading branch information
glecchi committed Nov 20, 2024
1 parent b22b7d2 commit d796465
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 24 deletions.
2 changes: 1 addition & 1 deletion Lib/CSQLQueryExpress/CSQLQueryExpress.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Title>CSQLQueryExpress</Title>
<Version>1.3.7</Version>
<Version>1.3.8</Version>
<Description>A simple c# library to compile TSQL queries</Description>
<PackageProjectUrl></PackageProjectUrl>
<PackageReadmeFile>README.md</PackageReadmeFile>
Expand Down
11 changes: 6 additions & 5 deletions Lib/CSQLQueryExpress/Compiler/SQLQueryCompiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@ public static class SQLQueryCompiler
/// <summary>
/// Compile a <see cref="ISQLQuery"/> instance in a <see cref="SQLQueryCompiled"/>.
/// </summary>
/// <param name="query">SQL query expression built with <see cref="SQLQuery"/>,</param>
/// <param name="query">SQL query expression built with <see cref="SQLQuery"/></param>
/// <param name="settings">[OPTIONAL] SQL query compiler setting <see cref="SQLQueryCompilerSettings"/></param>
/// <returns>A compiled expression <see cref="SQLQueryCompiled"/>.</returns>
public static SQLQueryCompiled Compile(ISQLQuery query)
public static SQLQueryCompiled Compile(ISQLQuery query, SQLQueryCompilerSettings settings = null)
{
var settings = new SQLQueryCompilerSettings();
var parameterBuilder = new SQLQueryParametersBuilder(settings);
var tableNameResolver = new SQLQueryTableNameResolver(settings);
var compilerSettings = settings ?? new SQLQueryCompilerSettings();
var parameterBuilder = new SQLQueryParametersBuilder(compilerSettings);
var tableNameResolver = new SQLQueryTableNameResolver(compilerSettings);

return Compile(query, parameterBuilder, tableNameResolver);
}
Expand Down
7 changes: 4 additions & 3 deletions Lib/CSQLQueryExpress/Compiler/SQLQueryExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ public static class SQLQueryExtensions
/// <summary>
/// Compile a <see cref="ISQLQuery"/> instance in a <see cref="SQLQueryCompiled"/>.
/// </summary>
/// <param name="query">SQL query expression built with <see cref="SQLQuery"/>,</param>
/// <param name="query">SQL query expression built with <see cref="SQLQuery"/></param>
/// <param name="settings">[OPTIONAL] SQL query compiler setting <see cref="SQLQueryCompilerSettings"/></param>
/// <returns>A compiled expression <see cref="SQLQueryCompiled"/>.</returns>
public static SQLQueryCompiled Compile(this ISQLQuery query)
public static SQLQueryCompiled Compile(this ISQLQuery query, SQLQueryCompilerSettings settings = null)
{
return SQLQueryCompiler.Compile(query);
return SQLQueryCompiler.Compile(query, settings);
}

/// <summary>
Expand Down
18 changes: 9 additions & 9 deletions Lib/CSQLQueryExpress/Compiler/SQLQueryParametersBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

namespace CSQLQueryExpress
{
internal class SQLQueryParametersBuilder : ISQLQueryParametersBuilder
public sealed class SQLQueryParametersBuilder : ISQLQueryParametersBuilder
{
public IDictionary<string, SQLQueryParameter> Parameters { get; } = new Dictionary<string, SQLQueryParameter>();
IDictionary<string, SQLQueryParameter> ISQLQueryParametersBuilder.Parameters { get; } = new Dictionary<string, SQLQueryParameter>();

private readonly SQLQueryCompilerSettings _settings;

Expand All @@ -14,22 +14,22 @@ public SQLQueryParametersBuilder(SQLQueryCompilerSettings settings)
_settings = settings;
}

public void Initialize()
void ISQLQueryParametersBuilder.Initialize()
{
Parameters.Clear();
((ISQLQueryParametersBuilder)this).Parameters.Clear();
}

public string AddParameter(object value)
string ISQLQueryParametersBuilder.AddParameter(object value)
{
var parameterName = $"{_settings.QueryParameterPrefix}{Parameters.Count}";
Parameters.Add(parameterName, new SQLQueryParameter(parameterName, value));
var parameterName = $"{_settings.QueryParameterPrefix}{((ISQLQueryParametersBuilder)this).Parameters.Count}";
((ISQLQueryParametersBuilder)this).Parameters.Add(parameterName, new SQLQueryParameter(parameterName, value));
return parameterName;
}

public string AddStoredProcedureParameter(string name, object value, SQLQueryParameterDirection direction)
string ISQLQueryParametersBuilder.AddStoredProcedureParameter(string name, object value, SQLQueryParameterDirection direction)
{
var parameterName = $"{_settings.StoredProcedureParameterPrefix}{name}";
Parameters.Add(parameterName, new SQLQueryParameter(parameterName, value, direction));
((ISQLQueryParametersBuilder)this).Parameters.Add(parameterName, new SQLQueryParameter(parameterName, value, direction));
return parameterName;
}
}
Expand Down
12 changes: 6 additions & 6 deletions Lib/CSQLQueryExpress/Compiler/SQLQueryTableNameResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace CSQLQueryExpress
{
internal class SQLQueryTableNameResolver : ISQLQueryTableNameResolver
public sealed class SQLQueryTableNameResolver : ISQLQueryTableNameResolver
{
private readonly SQLQueryCompilerSettings _settings;

Expand All @@ -19,13 +19,13 @@ public SQLQueryTableNameResolver(SQLQueryCompilerSettings settings)
_settings = settings;
}

public void Initialize()
void ISQLQueryTableNameResolver.Initialize()
{
Alias.Clear();
MembersTypes.Clear();
}

public SQLQueryTableName ResolveTableName(Type objType)
SQLQueryTableName ISQLQueryTableNameResolver.ResolveTableName(Type objType)
{
if (!Alias.TryGetValue(objType, out SQLQueryTableName alias))
{
Expand Down Expand Up @@ -59,14 +59,14 @@ public SQLQueryTableName ResolveTableName(Type objType)
return alias;
}

public string ResolveTableNameAsAlias(Type objType)
string ISQLQueryTableNameResolver.ResolveTableNameAsAlias(Type objType)
{
var tableAlias = ResolveTableName(objType);
var tableAlias = ((ISQLQueryTableNameResolver)this).ResolveTableName(objType);

return $"{tableAlias.TableName} AS {tableAlias.TableAlias}";
}

public string ResolveColumnName(Type objType, MemberInfo member)
string ISQLQueryTableNameResolver.ResolveColumnName(Type objType, MemberInfo member)
{
if (!MembersTypes.TryGetValue(member.DeclaringType, out IDictionary<MemberInfo, string> members))
{
Expand Down

0 comments on commit d796465

Please sign in to comment.