diff --git a/FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestInsertAndUpdate.cs b/FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestInsertAndUpdate.cs index f0b5883b..cde03601 100644 --- a/FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestInsertAndUpdate.cs +++ b/FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestInsertAndUpdate.cs @@ -110,6 +110,124 @@ namespace FreeSql.Tests.QuestDb.Crud Assert.True(result > 0); } + [Fact] + public async Task TestRestInsertAsync() + { + var result = await restFsql.Insert(new QuestDb_Model_Test01() + { + Primarys = Guid.NewGuid().ToString(), + CreateTime = DateTime.Now, + Activos = 100.21, + Id = "IdAsync", + IsCompra = true, + NameInsert = "NameInsert", + NameUpdate = "NameUpdate" + }).ExecuteAffrowsAsync(); + Assert.True(result > 0); + } + + [Fact] + public async Task TestRestInsertBatchAsync() + { + var list = new List() + { + new QuestDb_Model_Test01() + { + Primarys = Guid.NewGuid().ToString(), + CreateTime = DateTime.Now, + Activos = 100.21, + Id = "1", + IsCompra = true, + NameInsert = "NameInsertAsync", + NameUpdate = "NameUpdate" + }, + new QuestDb_Model_Test01() + { + Primarys = Guid.NewGuid().ToString(), + CreateTime = DateTime.Now, + Activos = 100.21, + Id = "2", + IsCompra = true, + NameInsert = "NameInsertAsync", + NameUpdate = "NameUpdate" + }, + new QuestDb_Model_Test01() + { + Primarys = Guid.NewGuid().ToString(), + CreateTime = DateTime.Now, + Activos = 100.21, + Id = "3", + IsCompra = true, + NameInsert = "NameInsertAsync", + NameUpdate = "NameUpdate" + }, + }; + var result = await restFsql.Insert(list).ExecuteAffrowsAsync(); + Assert.True(result > 0); + } + + [Fact] + public async Task TestRestInsertColumnsAsync() + { + var list = new List() + { + new QuestDb_Model_Test01() + { + Primarys = Guid.NewGuid().ToString(), + CreateTime = DateTime.Now, + Activos = 100.21, + Id = "1", + IsCompra = true, + NameInsert = "NameInsert", + NameUpdate = "NameUpdate" + }, + new QuestDb_Model_Test01() + { + Primarys = Guid.NewGuid().ToString(), + CreateTime = DateTime.Now, + Activos = 100.21, + Id = "2", + IsCompra = true, + NameInsert = "NameInsert", + NameUpdate = "NameUpdate" + }, + new QuestDb_Model_Test01() + { + Primarys = Guid.NewGuid().ToString(), + CreateTime = DateTime.Now, + Activos = 100.21, + Id = "3", + IsCompra = true, + NameInsert = "NameInsert", + NameUpdate = "NameUpdate" + }, + }; + var result = await restFsql.Insert(list).IgnoreColumns(q => q.NameInsert).ExecuteAffrowsAsync(); + Assert.True(result > 0); + } + + [Fact] + public async Task TestSqlBulkCopy() + { + var list = new List(); + for (int i = 0; i < 10; i++) + { + list.Add(new QuestDb_Model_Test01() + { + Primarys = Guid.NewGuid().ToString(), + CreateTime = DateTime.Now, + Activos = 100 + i, + Id = "1", + IsCompra = true, + NameInsert = "NameInsertAsync", + NameUpdate = "NameUpdate" + }); + } + var result = await restFsql.Insert(list).ExecuteBulkCopyAsync(); + Assert.True(result > 0); + } + + [Fact, Order(4)] public void TestNormalUpdate() { @@ -209,5 +327,7 @@ WHERE (""Id"" = '{primary}')", sql); .Set(q => q.UpdateTime, DateTime.Now) .ExecuteAffrowsAsync(); } + + } } \ No newline at end of file diff --git a/FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestUpdate.cs b/FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestUpdate.cs index c70c30e2..edb56d55 100644 --- a/FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestUpdate.cs +++ b/FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestUpdate.cs @@ -14,6 +14,104 @@ namespace FreeSql.Tests.QuestDb.Crud [TestCaseOrderer("FreeSql.Tests.QuestDb.Utils.TestOrders", "FreeSql.Tests")] public class QuestDbTestUpdate { - //多线程以及questdb问题转移至 insert中测试 + [Fact] + public void TestNormalRestUpdate() + { + var updateTime = DateTime.Now; + var updateObj = restFsql.Update() + .Set(q => q.NameUpdate, "UpdateNow") + // .Set(q => q.CreateTime, DateTime.Now) 分表的时间不可以随便改 + .Where(q => q.Id == "1"); + var updateSql = updateObj.ToSql(); + Debug.WriteLine(updateSql); + var sql = + $@"UPDATE ""QuestDb_Model_Test01"" SET ""NameUpdate"" = 'UpdateNow' +WHERE (""Id"" = '1')"; + Debug.WriteLine(sql); + Assert.Equal(updateSql, sql); + var result = updateObj.ExecuteAffrows(); + Assert.True(result > 0); + } + + [Fact] + public void TestRestUpdateByModel() + { + var primary = Guid.NewGuid().ToString(); + //先插入 + restFsql.Insert(new QuestDb_Model_Test01() + { + Primarys = primary, + CreateTime = DateTime.Now, + Activos = 100.21, + Id = primary, + IsCompra = true, + NameInsert = "NameInsert", + NameUpdate = "NameUpdate" + }).ExecuteAffrows(); + var updateModel = new QuestDb_Model_Test01 + { + Primarys = primary, + Id = primary, + Activos = 12.65, + }; + var updateObj = restFsql.Update().SetSourceIgnore(updateModel, o => o == null); + var sql = updateObj.ToSql(); + Debug.WriteLine(sql); + var result = updateObj.ExecuteAffrows(); + var resultAsync = restFsql.Update().SetSourceIgnore(updateModel, o => o == null) + .ExecuteAffrows(); + Assert.True(result > 0); + Assert.True(resultAsync > 0); + Assert.Equal( + @$"UPDATE ""QuestDb_Model_Test01"" SET ""Primarys"" = '{primary}', ""NameInsert"" = 'NameDefault', ""Activos"" = 12.65 +WHERE (""Id"" = '{primary}')", sql); + } + + [Fact] + public async Task TestRestUpdateIgnoreColumnsAsync() + { + var primary = Guid.NewGuid().ToString(); + var updateTime = DateTime.Now; + //先插入 + restFsql.Insert(new QuestDb_Model_Test01() + { + Primarys = primary, + CreateTime = DateTime.Now, + Activos = 100.21, + Id = primary, + IsCompra = true, + NameInsert = "NameInsert", + NameUpdate = "NameUpdate" + }).ExecuteAffrows(); + var updateModel = new QuestDb_Model_Test01 + { + Id = primary, + Activos = 12.65, + IsCompra = true, + CreateTime = DateTime.Now + }; + var updateObj = restFsql.Update().SetSource(updateModel) + .IgnoreColumns(q => new { q.Id, q.CreateTime }); + var sql = updateObj.ToSql(); + Debug.WriteLine(sql); + var result = updateObj.ExecuteAffrows(); + var resultAsync = await restFsql.Update().SetSource(updateModel) + .IgnoreColumns(q => new { q.Id, q.CreateTime }).ExecuteAffrowsAsync(); + Assert.True(result > 0); + Assert.True(resultAsync > 0); + Assert.Equal( + $@"UPDATE ""QuestDb_Model_Test01"" SET ""Primarys"" = NULL, ""NameUpdate"" = NULL, ""NameInsert"" = 'NameDefault', ""Activos"" = 12.65, ""UpdateTime"" = NULL, ""IsCompra"" = True +WHERE (""Id"" = '{primary}')", sql); + } + + [Fact] + public async Task TestUpdateToUpdateAsync() + { + //官网demo有问题,暂时放弃此功能 + var result = await restFsql.Select().Where(q => q.Id == "IdAsync" && q.NameInsert == null) + .ToUpdate() + .Set(q => q.UpdateTime, DateTime.Now) + .ExecuteAffrowsAsync(); + } } } \ No newline at end of file diff --git a/FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbTest.cs b/FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbTest.cs index 59441ad2..69072f41 100644 --- a/FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbTest.cs @@ -15,5 +15,12 @@ namespace FreeSql.Tests.QuestDb .UseMonitorCommand(cmd => Debug.WriteLine($"Sql:{cmd.CommandText}")) //监听SQL语句 .UseNoneCommandParameter(true) .Build(); + + public static IFreeSql restFsql = new FreeSql.FreeSqlBuilder() + .UseConnectionString(FreeSql.DataType.QuestDb, + @"host=192.168.0.36;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading;") + .UseMonitorCommand(cmd => Debug.WriteLine($"Sql:{cmd.CommandText}")) //监听SQL语句 + .UseQuestDbRestAPI("192.168.0.36:9001", "admin", "ushahL(aer2r") + .Build(); } } \ No newline at end of file