This commit is contained in:
Alexander
2023-08-18 18:22:16 +03:00
parent 7fad80bae1
commit 4617d02649
4 changed files with 227 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
using anbs_cp.Structs;
namespace anbs_cp.Database.Interfaces;
/// <summary>
/// Интерфейс для работы с базой данных
/// </summary>
public interface IDbEngine
{
/// <summary>
/// Строка подключения
/// </summary>
string ConnectionString { get; set; }
#region Небезопасные методы
Task<bool> ExecuteAsync (string sql, object model);
/// <summary>
/// Запрос на получение одной строки
/// </summary>
/// <typeparam name="T">Тип передаваемого значения</typeparam>
/// <param name="sql">Запрос</param>
/// <param name="model">Данные запроса</param>
/// <returns>Возвращает тип <see cref="T"/> или значение по умолчанию</returns>
Task<T> QueryRowAsync<T> (string sql, object model);
/// <summary>
/// Запрос
/// </summary>
/// <typeparam name="T">Тип передаваемого значения</typeparam>
/// <param name="sql">Запрос</param>
/// <param name="model">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
Task<IEnumerable<T>> QueryAsync<T> (string sql, object model);
#endregion
#region Получение
Task<IEnumerable<T>> SelectAsync<T> (string table, string[] columns, List<KeyValue<string, string>> where, string? orderBy = null);
Task<T> SelectRowAsync<T> (string table, List<string> columns, KeyValue<string, string> where, string? orderBy = null);
#endregion
#region Вычисление числа элементов в таблице
Task<int> CountAsync (string table);
#endregion
#region Добавление строки в таблицу
Task<TPit> InsertAsync<T, TPit> (string table, T entity, KeyValue<string, TPit> primaryIndex);
Task<bool> InsertUpdateAsync<T> (string table, T entity);
#endregion
#region Обновление строки в таблице
Task<bool> UpdateAsync<T> (string table, T entity, KeyValue<string, string> where);
#endregion
#region Удаление строк
Task<bool> DeleteAsync<T> (string table, KeyValue<string, string> where);
Task<bool> DeleteRowAsync<T> (string table, KeyValue<string, string> where);
#endregion
}