From cb8ffde7c0f9f6fa6a070ebdae1d3fa72de1672a Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 19 Aug 2023 18:12:03 +0300 Subject: [PATCH] 20230819-1 --- anbs_cpdb/Classes/MySqlEngine.cs | 36 +++++++++++++++------------- anbs_cpdb/Interfaces/IDbEngine.cs | 40 ++++++++++++++++--------------- anbs_cpdb/anbs_cpdb.csproj | 4 +--- 3 files changed, 42 insertions(+), 38 deletions(-) diff --git a/anbs_cpdb/Classes/MySqlEngine.cs b/anbs_cpdb/Classes/MySqlEngine.cs index 20dee85..8f328ca 100644 --- a/anbs_cpdb/Classes/MySqlEngine.cs +++ b/anbs_cpdb/Classes/MySqlEngine.cs @@ -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 /// /// Удаляет строки /// + /// Данные /// Имя таблицы - /// Условие + /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - public async Task DeleteAsync (string tableName, KeyValue where) + public async Task DeleteAsync (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; } /// /// Удаляет строки /// + /// Данные /// Имя таблицы - /// Условие + /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - public bool Delete (string tableName, KeyValue where) => DeleteAsync(tableName, where).GetAwaiter().GetResult(); + public bool Delete (T data, string tableName, string whereConditionColumn) where T : class => + DeleteAsync(data, tableName, whereConditionColumn).GetAwaiter().GetResult(); /// /// Удаляет строку /// + /// Данные /// Имя таблицы - /// Условие + /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - public async Task DeleteRowAsync (string tableName, KeyValue where) + public async Task DeleteRowAsync (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; } /// /// Удаляет строку /// + /// Данные /// Имя таблицы - /// Условие + /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - public bool DeleteRow (string tableName, KeyValue where) => DeleteRowAsync(tableName, where).GetAwaiter().GetResult(); + public bool DeleteRow(T data, string tableName, string whereConditionColumn) where T : class => + DeleteRowAsync(data, tableName, whereConditionColumn).GetAwaiter().GetResult(); #endregion } \ No newline at end of file diff --git a/anbs_cpdb/Interfaces/IDbEngine.cs b/anbs_cpdb/Interfaces/IDbEngine.cs index 672eed1..8499723 100644 --- a/anbs_cpdb/Interfaces/IDbEngine.cs +++ b/anbs_cpdb/Interfaces/IDbEngine.cs @@ -1,6 +1,4 @@ -using anbs_cp.Structs; - -namespace anbs_cp.Database.Interfaces; +namespace anbs_cp.Database.Interfaces; /// /// Интерфейс для работы с базой данных @@ -112,7 +110,7 @@ public interface IDbEngine /// SQL-запрос /// Данные запроса /// Колонка данных или null - Task> GetColAsync (string sql, object values) where T : IComparable, IConvertible, IEquatable; + Task> GetColAsync (string sql, object values) where T: IComparable, IConvertible, IEquatable; /// /// Получает колонку в массиве данных @@ -121,7 +119,7 @@ public interface IDbEngine /// SQL-запрос /// Данные запроса /// Колонка данных или null - IEnumerable GetCol (string sql, object values) where T : IComparable, IConvertible, IEquatable; + IEnumerable GetCol (string sql, object values) where T: IComparable, IConvertible, IEquatable; /// /// Получение значение единичного поля @@ -130,7 +128,7 @@ public interface IDbEngine /// SQL-запрос /// Данные запроса /// Поле или null - Task GetVarAsync (string sql, object values) where T : IComparable, IConvertible, IEquatable; + Task GetVarAsync (string sql, object values) where T: IComparable, IConvertible, IEquatable; /// /// Получение значение единичного поля @@ -139,7 +137,7 @@ public interface IDbEngine /// SQL-запрос /// Данные запроса /// Поле или null - T? GetVar (string sql, object values) where T : IComparable, IConvertible, IEquatable; + T? GetVar (string sql, object values) where T: IComparable, IConvertible, IEquatable; #endregion @@ -151,7 +149,7 @@ public interface IDbEngine /// Данные /// Имя таблицы /// Результат выполнения - Task InsertAsync (T data, string tableName) where T : class; + Task InsertAsync (T data, string tableName) where T: class; /// /// Вставляет данные в таблицу @@ -160,7 +158,7 @@ public interface IDbEngine /// Данные /// Имя таблицы /// Результат выполнения - bool Insert (T data, string tableName) where T : class; + bool Insert (T data, string tableName) where T: class; /// /// Обновляет строку в таблице @@ -170,7 +168,7 @@ public interface IDbEngine /// Имя таблицы /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - Task UpdateAsync (T data, string tableName, string whereConditionColumn) where T : class; + Task UpdateAsync (T data, string tableName, string whereConditionColumn) where T: class; /// /// Обновляет строку в таблице @@ -180,38 +178,42 @@ public interface IDbEngine /// Имя таблицы /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - bool Update (T data, string tableName, string whereConditionColumn) where T : class; + bool Update (T data, string tableName, string whereConditionColumn) where T: class; /// /// Удаляет строки /// + /// Данные /// Имя таблицы - /// Условие + /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - Task DeleteAsync (string tableName, KeyValue where); + Task DeleteAsync (T data, string tableName, string whereConditionColumn) where T: class; /// /// Удаляет строки /// + /// Данные /// Имя таблицы - /// Условие + /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - bool Delete (string tableName, KeyValue where); + bool Delete (T data, string tableName, string whereConditionColumn) where T: class; /// /// Удаляет строку /// + /// Данные /// Имя таблицы - /// Условие + /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - Task DeleteRowAsync (string tableName, KeyValue where); + Task DeleteRowAsync (T data, string tableName, string whereConditionColumn) where T: class; /// /// Удаляет строку /// + /// Данные /// Имя таблицы - /// Условие + /// Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data /// Результат выполнения - bool DeleteRow (string tableName, KeyValue where); + bool DeleteRow (T data, string tableName, string whereConditionColumn) where T: class; #endregion } \ No newline at end of file diff --git a/anbs_cpdb/anbs_cpdb.csproj b/anbs_cpdb/anbs_cpdb.csproj index a96949b..730b781 100644 --- a/anbs_cpdb/anbs_cpdb.csproj +++ b/anbs_cpdb/anbs_cpdb.csproj @@ -8,7 +8,7 @@ anbs_cp.Database True ANBSoftware.ComponentsPack.Database - 2023.08.19 + 2023.08.19.4 Александр Бабаев Набор компонентов ANB Software для работы с БД Библиотека полезных методов языка C# для работы с базами данных @@ -19,10 +19,8 @@ - -