20230819-1

This commit is contained in:
Александр Бабаев 2023-08-19 18:12:03 +03:00
parent 9b37f0477e
commit cb8ffde7c0
3 changed files with 42 additions and 38 deletions

View File

@ -1,5 +1,4 @@
using anbs_cp.Database.Interfaces;
using anbs_cp.Structs;
using Dapper;
@ -276,10 +275,9 @@ public class MySqlEngine: IDbEngine
// Создаю запрос
string sql = $"""
UPDATE
{tableName}
UPDATE {tableName}
SET
({properties})
{properties}
WHERE
{whereConditionColumn}=@{whereConditionColumn}
""";
@ -302,10 +300,11 @@ public class MySqlEngine: IDbEngine
/// <summary>
/// Удаляет строки
/// </summary>
/// <param name="data">Данные</param>
/// <param name="tableName">Имя таблицы</param>
/// <param name="where">Условие</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
public async Task<bool> DeleteAsync (string tableName, KeyValue<string, object> where)
public async Task<bool> DeleteAsync<T> (T data, string tableName, string whereConditionColumn) where T : class
{
// Создаю соединение
await using MySqlConnection connection = new(ConnectionString);
@ -315,28 +314,31 @@ public class MySqlEngine: IDbEngine
DELETE FROM
{tableName}
WHERE
{where.Key}=@{where.Key}
{whereConditionColumn}=@{whereConditionColumn}
""";
// Выполняю запрос
return await connection.ExecuteAsync(sql, new { where.Value }) > 0;
return await connection.ExecuteAsync(sql, data) > 0;
}
/// <summary>
/// Удаляет строки
/// </summary>
/// <param name="data">Данные</param>
/// <param name="tableName">Имя таблицы</param>
/// <param name="where">Условие</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
public bool Delete (string tableName, KeyValue<string, object> where) => DeleteAsync(tableName, where).GetAwaiter().GetResult();
public bool Delete<T> (T data, string tableName, string whereConditionColumn) where T : class =>
DeleteAsync(data, tableName, whereConditionColumn).GetAwaiter().GetResult();
/// <summary>
/// Удаляет строку
/// </summary>
/// <param name="data">Данные</param>
/// <param name="tableName">Имя таблицы</param>
/// <param name="where">Условие</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
public async Task<bool> DeleteRowAsync (string tableName, KeyValue<string, object> where)
public async Task<bool> DeleteRowAsync<T> (T data, string tableName, string whereConditionColumn) where T : class
{
// Создаю соединение
await using MySqlConnection connection = new(ConnectionString);
@ -346,20 +348,22 @@ public class MySqlEngine: IDbEngine
DELETE FROM
{tableName}
WHERE
{where.Key}=@{where.Key}
{whereConditionColumn}=@{whereConditionColumn}
LIMIT 1
""";
// Выполняю запрос
return await connection.ExecuteAsync(sql, new { where.Value }) > 0;
return await connection.ExecuteAsync(sql, data) > 0;
}
/// <summary>
/// Удаляет строку
/// </summary>
/// <param name="data">Данные</param>
/// <param name="tableName">Имя таблицы</param>
/// <param name="where">Условие</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
public bool DeleteRow (string tableName, KeyValue<string, object> where) => DeleteRowAsync(tableName, where).GetAwaiter().GetResult();
public bool DeleteRow<T>(T data, string tableName, string whereConditionColumn) where T : class =>
DeleteRowAsync(data, tableName, whereConditionColumn).GetAwaiter().GetResult();
#endregion
}

View File

@ -1,6 +1,4 @@
using anbs_cp.Structs;
namespace anbs_cp.Database.Interfaces;
namespace anbs_cp.Database.Interfaces;
/// <summary>
/// Интерфейс для работы с базой данных
@ -185,33 +183,37 @@ public interface IDbEngine
/// <summary>
/// Удаляет строки
/// </summary>
/// <param name="data">Данные</param>
/// <param name="tableName">Имя таблицы</param>
/// <param name="where">Условие</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
Task<bool> DeleteAsync (string tableName, KeyValue<string, object> where);
Task<bool> DeleteAsync<T> (T data, string tableName, string whereConditionColumn) where T: class;
/// <summary>
/// Удаляет строки
/// </summary>
/// <param name="data">Данные</param>
/// <param name="tableName">Имя таблицы</param>
/// <param name="where">Условие</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
bool Delete (string tableName, KeyValue<string, object> where);
bool Delete<T> (T data, string tableName, string whereConditionColumn) where T: class;
/// <summary>
/// Удаляет строку
/// </summary>
/// <param name="data">Данные</param>
/// <param name="tableName">Имя таблицы</param>
/// <param name="where">Условие</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
Task<bool> DeleteRowAsync (string tableName, KeyValue<string, object> where);
Task<bool> DeleteRowAsync <T> (T data, string tableName, string whereConditionColumn) where T: class;
/// <summary>
/// Удаляет строку
/// </summary>
/// <param name="data">Данные</param>
/// <param name="tableName">Имя таблицы</param>
/// <param name="where">Условие</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
bool DeleteRow (string tableName, KeyValue<string, object> where);
bool DeleteRow <T> (T data, string tableName, string whereConditionColumn) where T: class;
#endregion
}

View File

@ -8,7 +8,7 @@
<RootNamespace>anbs_cp.Database</RootNamespace>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageId>ANBSoftware.ComponentsPack.Database</PackageId>
<Version>2023.08.19</Version>
<Version>2023.08.19.4</Version>
<Company>Александр Бабаев</Company>
<Product>Набор компонентов ANB Software для работы с БД</Product>
<Description>Библиотека полезных методов языка C# для работы с базами данных</Description>
@ -19,10 +19,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ANBSoftware.ComponentsPack" Version="2023.813.1" />
<PackageReference Include="Dapper" Version="2.0.151" />
<PackageReference Include="MySqlConnector" Version="2.2.7" />
<PackageReference Include="Z.Dapper.Plus" Version="6.0.2" />
</ItemGroup>
</Project>