Commit adf35ffc authored by kmontrose's avatar kmontrose

Adding select composition to SqlBuilder (Contrib).

parent ded52a5e
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using Dapper.Contrib.Extensions; using Dapper.Contrib.Extensions;
using System.Collections.Generic;
using System;
namespace Dapper.Contrib.Tests namespace Dapper.Contrib.Tests
...@@ -100,5 +102,35 @@ public void InsertGetUpdate() ...@@ -100,5 +102,35 @@ public void InsertGetUpdate()
connection.Update(notrackedUser).IsEqualTo(false); //returns false, user not found connection.Update(notrackedUser).IsEqualTo(false); //returns false, user not found
} }
} }
public void SelectClause()
{
using (var connection = GetOpenConnection())
{
var rand = new Random(8675309);
var data = new List<User>();
for (int i = 0; i < 100; i++)
{
var nU = new User { Age = rand.Next(70), Id = i, Name = Guid.NewGuid().ToString() };
data.Add(nU);
nU.Id = (int)connection.Insert<User>(nU);
}
var builder = new SqlBuilder();
var justId = builder.AddTemplate("SELECT /**select**/ FROM Users");
var all = builder.AddTemplate("SELECT Name, /**select**/, Age FROM Users");
builder.Select("Id");
var ids = connection.Query<int>(justId.RawSql, justId.Parameters);
var users = connection.Query<User>(all.RawSql, all.Parameters);
foreach (var u in data)
{
if (!ids.Any(i => u.Id == i)) throw new Exception("Missing ids in select");
if (!users.Any(a => a.Id == u.Id && a.Name == u.Name && a.Age == u.Age)) throw new Exception("Missing users in select");
}
}
}
} }
} }
...@@ -556,5 +556,11 @@ public SqlBuilder OrderBy(string sql, dynamic parameters = null) ...@@ -556,5 +556,11 @@ public SqlBuilder OrderBy(string sql, dynamic parameters = null)
AddClause("orderby", sql, parameters, " , ", prefix: "ORDER BY ", postfix: "\n"); AddClause("orderby", sql, parameters, " , ", prefix: "ORDER BY ", postfix: "\n");
return this; return this;
} }
public SqlBuilder Select(string sql, dynamic parameters = null)
{
AddClause("select", sql, parameters, " , ", prefix: "", postfix: "\n");
return this;
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment