Add typed insert/update/delete builders and typed join variants

This commit is contained in:
root
2026-02-26 18:35:49 +01:00
parent 40a3907570
commit 33cadaf05b
14 changed files with 930 additions and 146 deletions

View File

@@ -47,6 +47,21 @@ namespace DynamORM.Tests.Modify
cmd.CommandText());
}
[Test]
public void TestTypedUpdateBuilderSetAndWhere()
{
var cmd = Database.Update<Users>()
.Set(u => u.Code, "778")
.Where(u => u.Id == 1 && u.Code == "1");
Assert.AreEqual(
string.Format("UPDATE \"sample_users\" SET \"code\" = [${0}] WHERE (\"id\" = [${1}]) AND (\"code\" = [${2}])",
cmd.Parameters.Keys.ElementAt(0),
cmd.Parameters.Keys.ElementAt(1),
cmd.Parameters.Keys.ElementAt(2)),
cmd.CommandText());
}
[Test]
public void TestTypedDeleteWhere()
{
@@ -58,6 +73,17 @@ namespace DynamORM.Tests.Modify
cmd.CommandText());
}
[Test]
public void TestTypedDeleteBuilderWhere()
{
var cmd = Database.Delete<Users>()
.Where(u => u.Id == 3);
Assert.AreEqual(
string.Format("DELETE FROM \"sample_users\" WHERE (\"id\" = [${0}])", cmd.Parameters.Keys.First()),
cmd.CommandText());
}
[Test]
public void TestTypedInsertColumns()
{
@@ -71,5 +97,19 @@ namespace DynamORM.Tests.Modify
cmd.Parameters.Keys.ElementAt(1)),
cmd.CommandText());
}
[Test]
public void TestTypedInsertBuilderColumns()
{
var cmd = Database.Insert<Users>()
.Insert(u => u.Code, "901")
.Insert(u => u.First, "TypedB");
Assert.AreEqual(
string.Format("INSERT INTO \"sample_users\" (\"code\", \"first\") VALUES ([${0}], [${1}])",
cmd.Parameters.Keys.ElementAt(0),
cmd.Parameters.Keys.ElementAt(1)),
cmd.CommandText());
}
}
}

View File

@@ -100,11 +100,44 @@ namespace DynamORM.Tests.Select
public void TestTypedJoin()
{
var cmd = Database.From<TypedFluentUser>("u")
.JoinTyped<TypedFluentUser, TypedFluentUser>("x", (l, r) => l.Id == r.Id)
.Join<TypedFluentUser>((l, r) => l.Id == r.Id, "x")
.SelectTyped(u => u.Id);
Assert.AreEqual("SELECT u.\"id_user\" FROM \"sample_users\" AS u INNER JOIN \"sample_users\" AS x ON (u.\"id_user\" = x.\"id_user\")",
cmd.CommandText());
}
[Test]
public void TestTypedLeftJoin()
{
var cmd = Database.From<TypedFluentUser>("u")
.LeftJoin<TypedFluentUser>((l, r) => l.Id == r.Id, "x")
.SelectTyped(u => u.Id);
Assert.AreEqual("SELECT u.\"id_user\" FROM \"sample_users\" AS u LEFT JOIN \"sample_users\" AS x ON (u.\"id_user\" = x.\"id_user\")",
cmd.CommandText());
}
[Test]
public void TestTypedRightJoin()
{
var cmd = Database.From<TypedFluentUser>("u")
.RightJoin<TypedFluentUser>((l, r) => l.Id == r.Id, "x")
.SelectTyped(u => u.Id);
Assert.AreEqual("SELECT u.\"id_user\" FROM \"sample_users\" AS u RIGHT JOIN \"sample_users\" AS x ON (u.\"id_user\" = x.\"id_user\")",
cmd.CommandText());
}
[Test]
public void TestTypedFullJoin()
{
var cmd = Database.From<TypedFluentUser>("u")
.FullJoin<TypedFluentUser>((l, r) => l.Id == r.Id, "x")
.SelectTyped(u => u.Id);
Assert.AreEqual("SELECT u.\"id_user\" FROM \"sample_users\" AS u FULL JOIN \"sample_users\" AS x ON (u.\"id_user\" = x.\"id_user\")",
cmd.CommandText());
}
}
}