• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / FluentCommand / 6648415992

26 Oct 2023 01:49AM UTC coverage: 51.645% (+0.1%) from 51.515%
6648415992

push

github

pwelter34
Update InsertBuilder.cs

981 of 2442 branches covered (0.0%)

Branch coverage included in aggregate %.

2896 of 5065 relevant lines covered (57.18%)

156.37 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

70.83
/src/FluentCommand/Query/QueryBuilder.cs
1
using System.Text;
2

3
using FluentCommand.Query.Generators;
4

5
namespace FluentCommand.Query;
6

7
/// <summary>
8
/// High level query builder
9
/// </summary>
10
/// <seealso cref="FluentCommand.Query.IStatementBuilder" />
11
public class QueryBuilder : IStatementBuilder
12
{
13
    private readonly Queue<IStatementBuilder> _builderQueue = new();
52✔
14

15
    /// <summary>
16
    /// Initializes a new instance of the <see cref="QueryBuilder"/> class.
17
    /// </summary>
18
    /// <param name="queryGenerator">The query generator.</param>
19
    /// <param name="parameters">The parameters.</param>
20
    /// <exception cref="System.ArgumentNullException">queryGenerator or parameters</exception>
21
    public QueryBuilder(IQueryGenerator queryGenerator, List<QueryParameter> parameters)
22
    {
23
        QueryGenerator = queryGenerator ?? throw new ArgumentNullException(nameof(queryGenerator));
52!
24
        Parameters = parameters ?? throw new ArgumentNullException(nameof(parameters));
52!
25
    }
52✔
26

27
    /// <summary>
28
    /// Gets the query generator.
29
    /// </summary>
30
    /// <value>
31
    /// The query generator.
32
    /// </value>
33
    protected IQueryGenerator QueryGenerator { get; }
34

35
    /// <summary>
36
    /// Gets the query parameters.
37
    /// </summary>
38
    /// <value>
39
    /// The query parameters.
40
    /// </value>
41
    protected List<QueryParameter> Parameters { get; }
42

43

44
    /// <summary>
45
    /// Starts a statement builder
46
    /// </summary>
47
    /// <returns>A new statement builder</returns>
48
    public StatementBuilder Statement()
49
    {
50
        var builder = new StatementBuilder(QueryGenerator, Parameters);
3✔
51

52
        _builderQueue.Enqueue(builder);
3✔
53

54
        return builder;
3✔
55
    }
56

57
    /// <summary>
58
    /// Starts a select statement builder
59
    /// </summary>
60
    /// <typeparam name="TEntity">The type of the entity.</typeparam>
61
    /// <returns>A new select statement builder</returns>
62
    public SelectEntityBuilder<TEntity> Select<TEntity>()
63
        where TEntity : class
64
    {
65
        var builder = new SelectEntityBuilder<TEntity>(QueryGenerator, Parameters);
35✔
66

67
        _builderQueue.Enqueue(builder);
35✔
68

69
        return builder;
35✔
70
    }
71

72
    /// <summary>
73
    /// Starts a select statement builder
74
    /// </summary>
75
    /// <returns>A new select statement builder</returns>
76
    public SelectBuilder Select()
77
    {
78
        var builder = new SelectBuilder(QueryGenerator, Parameters);
×
79

80
        _builderQueue.Enqueue(builder);
×
81

82
        return builder;
×
83

84
    }
85

86
    /// <summary>
87
    /// Starts an insert statement builder
88
    /// </summary>
89
    /// <typeparam name="TEntity">The type of the entity.</typeparam>
90
    /// <returns>A new insert statement builder</returns>
91
    public InsertEntityBuilder<TEntity> Insert<TEntity>()
92
        where TEntity : class
93
    {
94
        var builder = new InsertEntityBuilder<TEntity>(QueryGenerator, Parameters);
10✔
95

96
        _builderQueue.Enqueue(builder);
10✔
97

98
        return builder;
10✔
99
    }
100

101
    /// <summary>
102
    /// Starts an insert statement builder
103
    /// </summary>
104
    /// <returns>A new insert statement builder</returns>
105
    public InsertBuilder Insert()
106
    {
107
        var builder = new InsertBuilder(QueryGenerator, Parameters);
×
108

109
        _builderQueue.Enqueue(builder);
×
110

111
        return builder;
×
112

113
    }
114

115
    /// <summary>
116
    /// Starts an update statement builder
117
    /// </summary>
118
    /// <typeparam name="TEntity">The type of the entity.</typeparam>
119
    /// <returns>A new update statement builder</returns>
120
    public UpdateEntityBuilder<TEntity> Update<TEntity>()
121
        where TEntity : class
122
    {
123
        var builder = new UpdateEntityBuilder<TEntity>(QueryGenerator, Parameters);
4✔
124

125
        _builderQueue.Enqueue(builder);
4✔
126

127
        return builder;
4✔
128

129
    }
130

131
    /// <summary>
132
    /// Starts an update statement builder
133
    /// </summary>
134
    /// <returns>A new update statement builder</returns>
135
    public UpdateBuilder Update()
136
    {
137
        var builder = new UpdateBuilder(QueryGenerator, Parameters);
×
138

139
        _builderQueue.Enqueue(builder);
×
140

141
        return builder;
×
142
    }
143

144
    /// <summary>
145
    /// Starts a delete statement builder
146
    /// </summary>
147
    /// <typeparam name="TEntity">The type of the entity.</typeparam>
148
    /// <returns>A new delete statement builder</returns>
149
    public DeleteEntityBuilder<TEntity> Delete<TEntity>()
150
        where TEntity : class
151
    {
152
        var builder = new DeleteEntityBuilder<TEntity>(QueryGenerator, Parameters);
3✔
153

154
        _builderQueue.Enqueue(builder);
3✔
155

156
        return builder;
3✔
157

158
    }
159

160
    /// <summary>
161
    /// Starts a delete statement builder
162
    /// </summary>
163
    /// <returns>A new insert statement builder</returns>
164
    public DeleteBuilder Delete()
165
    {
166
        var builder = new DeleteBuilder(QueryGenerator, Parameters);
×
167

168
        _builderQueue.Enqueue(builder);
×
169

170
        return builder;
×
171
    }
172

173
    /// <inheritdoc />
174
    public QueryStatement BuildStatement()
175
    {
176
        // optimize for when only 1 builder
177
        if (_builderQueue.Count == 1)
52✔
178
        {
179
            var builder = _builderQueue.Dequeue();
50✔
180
            return builder.BuildStatement();
50✔
181
        }
182

183
        // merge all queued builders together
184
        var query = new StringBuilder();
2✔
185

186
        while (_builderQueue.Count > 0)
7✔
187
        {
188
            var builder = _builderQueue.Dequeue();
5✔
189
            var statement = builder.BuildStatement();
5✔
190

191
            query.AppendLine(statement.Statement);
5✔
192
        }
193

194
        return new QueryStatement(query.ToString(), Parameters);
2✔
195
    }
196
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc