Skip to content

Commit bfb4fbf

Browse files
committed
Merge pull request ThatRendle#193 from SimonH/master
Custom Query builders and update locking
2 parents cadf402 + 960644d commit bfb4fbf

16 files changed

+561
-365
lines changed

Simple.Data.Ado/AdoAdapterQueryRunner.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ out IEnumerable<SimpleQueryClauseBase>
9494
.ClearTake()
9595
.ClearOrderBy()
9696
.ClearWith()
97+
.ClearForUpdate()
9798
.ReplaceSelect(new CountSpecialReference());
9899
var unhandledClausesList = new List<IEnumerable<SimpleQueryClauseBase>>
99100
{

Simple.Data.Ado/CommandBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace Simple.Data.Ado
1111
{
12-
class CommandBuilder : ICommandBuilder
12+
public class CommandBuilder : ICommandBuilder
1313
{
1414
private int _number;
1515
private Func<IDbCommand, IDbParameterFactory> _getParameterFactory;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using System.Collections.Generic;
2+
3+
namespace Simple.Data.Ado
4+
{
5+
public interface ICustomQueryBuilder
6+
{
7+
ICommandBuilder Build(AdoAdapter adapter, int bulkIndex, SimpleQuery query, out IEnumerable<SimpleQueryClauseBase> unhandledClauses);
8+
}
9+
}

Simple.Data.Ado/Joiner.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace Simple.Data.Ado
1010
{
11-
class Joiner
11+
public class Joiner
1212
{
1313
private readonly JoinType _joinType;
1414
private readonly DatabaseSchema _schema;

Simple.Data.Ado/QueryBuilder.cs

Lines changed: 13 additions & 360 deletions
Large diffs are not rendered by default.

Simple.Data.Ado/QueryBuilderBase.cs

Lines changed: 378 additions & 0 deletions
Large diffs are not rendered by default.

Simple.Data.Ado/Simple.Data.Ado.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
<Compile Include="ICommandBuilder.cs" />
9999
<Compile Include="IConnectionProvider.cs" />
100100
<Compile Include="ICustomInserter.cs" />
101+
<Compile Include="ICustomQueryBuilder.cs" />
101102
<Compile Include="IDbParameterFactory.cs" />
102103
<Compile Include="IExpressionFormatter.cs" />
103104
<Compile Include="IFunctionNameConverter.cs" />
@@ -121,6 +122,7 @@
121122
</Compile>
122123
<Compile Include="ProviderHelper.cs" />
123124
<Compile Include="QueryBuilder.cs" />
125+
<Compile Include="QueryBuilderBase.cs" />
124126
<Compile Include="SimpleReferenceFormatter.cs" />
125127
<Compile Include="SchemaResolutionException.cs" />
126128
<Compile Include="Schema\AmbiguousObjectNameException.cs" />

Simple.Data.Ado/SimpleReferenceFormatter.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,22 @@ namespace Simple.Data.Ado
55
using System.Text;
66
using Schema;
77

8-
class SimpleReferenceFormatter
8+
public class SimpleReferenceFormatter
99
{
10-
private readonly IFunctionNameConverter _functionNameConverter = new FunctionNameConverter();
10+
private readonly IFunctionNameConverter _functionNameConverter;
1111
private readonly DatabaseSchema _schema;
1212
private readonly ICommandBuilder _commandBuilder;
1313

14-
public SimpleReferenceFormatter(DatabaseSchema schema, ICommandBuilder commandBuilder)
14+
public SimpleReferenceFormatter(DatabaseSchema schema, ICommandBuilder commandBuilder) : this(schema, commandBuilder, null)
15+
{
16+
17+
}
18+
19+
public SimpleReferenceFormatter(DatabaseSchema schema, ICommandBuilder commandBuilder, IFunctionNameConverter functionNameConverter)
1520
{
1621
_schema = schema;
1722
_commandBuilder = commandBuilder;
23+
_functionNameConverter = functionNameConverter ?? new FunctionNameConverter();
1824
}
1925

2026
public string FormatColumnClause(SimpleReference reference)

Simple.Data.SqlServer/Simple.Data.SqlServer.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,14 @@
5959
<DependentUpon>Resources.resx</DependentUpon>
6060
</Compile>
6161
<Compile Include="SqlBulkInserter.cs" />
62+
<Compile Include="SqlCustomQueryBuilder.cs" />
6263
<Compile Include="SqlDbParameterFactory.cs" />
6364
<Compile Include="SqlColumn.cs" />
6465
<Compile Include="SqlCommandOptimizer.cs" />
6566
<Compile Include="SqlConnectionProvider.cs" />
6667
<Compile Include="SqlDbTypeEx.cs" />
6768
<Compile Include="SqlObservableQueryRunner.cs" />
69+
<Compile Include="SqlQueryBuilder.cs" />
6870
<Compile Include="SqlQueryPager.cs" />
6971
<Compile Include="SqlSchemaProvider.cs" />
7072
<Compile Include="SqlTypeResolver.cs" />
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System.Collections.Generic;
2+
using System.ComponentModel.Composition;
3+
using Simple.Data.Ado;
4+
5+
namespace Simple.Data.SqlServer
6+
{
7+
8+
[Export(typeof(ICustomQueryBuilder))]
9+
public class SqlCustomQueryBuilder : ICustomQueryBuilder
10+
{
11+
public ICommandBuilder Build(AdoAdapter adapter, int bulkIndex, SimpleQuery query, out IEnumerable<SimpleQueryClauseBase> unhandledClauses)
12+
{
13+
return new SqlQueryBuilder(adapter, bulkIndex).Build(query, out unhandledClauses);
14+
}
15+
}
16+
}

0 commit comments

Comments
 (0)