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
}