添加QuestDb RestAPI支持

This commit is contained in:
dailyccc 2023-02-21 20:49:46 +08:00
parent 71beabf8b4
commit 3f9afdad85
3 changed files with 226 additions and 1 deletions

View File

@ -110,6 +110,124 @@ namespace FreeSql.Tests.QuestDb.Crud
Assert.True(result > 0); 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<QuestDb_Model_Test01>()
{
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<QuestDb_Model_Test01>()
{
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<QuestDb_Model_Test01>();
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)] [Fact, Order(4)]
public void TestNormalUpdate() public void TestNormalUpdate()
{ {
@ -209,5 +327,7 @@ WHERE (""Id"" = '{primary}')", sql);
.Set(q => q.UpdateTime, DateTime.Now) .Set(q => q.UpdateTime, DateTime.Now)
.ExecuteAffrowsAsync(); .ExecuteAffrowsAsync();
} }
} }
} }

View File

@ -14,6 +14,104 @@ namespace FreeSql.Tests.QuestDb.Crud
[TestCaseOrderer("FreeSql.Tests.QuestDb.Utils.TestOrders", "FreeSql.Tests")] [TestCaseOrderer("FreeSql.Tests.QuestDb.Utils.TestOrders", "FreeSql.Tests")]
public class QuestDbTestUpdate public class QuestDbTestUpdate
{ {
//多线程以及questdb问题转移至 insert中测试 [Fact]
public void TestNormalRestUpdate()
{
var updateTime = DateTime.Now;
var updateObj = restFsql.Update<QuestDb_Model_Test01>()
.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<QuestDb_Model_Test01>().SetSourceIgnore(updateModel, o => o == null);
var sql = updateObj.ToSql();
Debug.WriteLine(sql);
var result = updateObj.ExecuteAffrows();
var resultAsync = restFsql.Update<QuestDb_Model_Test01>().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<QuestDb_Model_Test01>().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<QuestDb_Model_Test01>().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<QuestDb_Model_Test01>().Where(q => q.Id == "IdAsync" && q.NameInsert == null)
.ToUpdate()
.Set(q => q.UpdateTime, DateTime.Now)
.ExecuteAffrowsAsync();
}
} }
} }

View File

@ -15,5 +15,12 @@ namespace FreeSql.Tests.QuestDb
.UseMonitorCommand(cmd => Debug.WriteLine($"Sql{cmd.CommandText}")) //监听SQL语句 .UseMonitorCommand(cmd => Debug.WriteLine($"Sql{cmd.CommandText}")) //监听SQL语句
.UseNoneCommandParameter(true) .UseNoneCommandParameter(true)
.Build(); .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();
} }
} }