20230819
This commit is contained in:
@@ -12,84 +12,206 @@ public interface IDbEngine
|
||||
/// </summary>
|
||||
string ConnectionString { get; set; }
|
||||
|
||||
#region Небезопасные методы
|
||||
|
||||
Task<bool> ExecuteAsync (string sql, object model);
|
||||
#region Базовые операции
|
||||
|
||||
/// <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);
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Количество затронутых строк</returns>
|
||||
Task<int> ExecuteAsync (string sql, object values);
|
||||
|
||||
/// <summary>
|
||||
/// Выполняем команду
|
||||
/// </summary>
|
||||
/// <param name="sql">Запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Количество затронутых строк</returns>
|
||||
int Execute (string sql, object values);
|
||||
|
||||
/// <summary>
|
||||
/// Запрос
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип передаваемого значения</typeparam>
|
||||
/// <param name="sql">Запрос</param>
|
||||
/// <param name="model">Данные запроса</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
|
||||
Task<IEnumerable<T>> QueryAsync<T> (string sql, object model);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Получение
|
||||
Task<IEnumerable<T>> QueryAsync<T> (string sql, object values);
|
||||
|
||||
/// <summary>
|
||||
/// Выборка данных из таблицы
|
||||
/// Запрос
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип данных</typeparam>
|
||||
/// <param name="table">Имя таблицы</param>
|
||||
/// <param name="columns">Выбор столбцов таблицы, которые должны попасть в выборку (пустая -- все)</param>
|
||||
/// <param name="where">Массив значений столбцов, которые должны попасть в выборку</param>
|
||||
/// <param name="orderBy">Сортировка</param>
|
||||
/// <param name="limit">Сколько максимально элементов должно быть в выборке (0 -- без ограничения)</param>
|
||||
/// <returns>Массив типа <see cref="T"/></returns>
|
||||
Task<IEnumerable<T>> SelectAsync<T> (string table, string[] columns, List<KeyValue<string, string>> where, string? orderBy, int limit = 0);
|
||||
/// <typeparam name="T">Тип передаваемого значения</typeparam>
|
||||
/// <param name="sql">Запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
|
||||
IEnumerable<T> Query<T> (string sql, object values);
|
||||
|
||||
/// <summary>
|
||||
/// Выборка строки из таблицы
|
||||
/// Запрос строки
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип данных</typeparam>
|
||||
/// <param name="table">Имя таблицы</param>
|
||||
/// <param name="columns">Выбор столбцов таблицы, которые должны попасть в выборку (пустая -- все)</param>
|
||||
/// <param name="where">Массив значений столбцов, которые должны попасть в выборку</param>
|
||||
/// <param name="orderBy">Сортировка</param>
|
||||
/// <returns>Тип <see cref="T"/> или null</returns>
|
||||
Task<T?> SelectRowAsync<T> (string table, string[] columns, List<KeyValue<string, string>> where, string? orderBy = null);
|
||||
#endregion
|
||||
/// <typeparam name="T">Тип передаваемого значения</typeparam>
|
||||
/// <param name="sql">Запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
|
||||
Task<T?> QueryRowAsync<T> (string sql, object values);
|
||||
|
||||
#region Вычисление числа элементов в таблице
|
||||
/// <summary>
|
||||
/// Вычисляет число строк в таблице <paramref name="table"/>
|
||||
/// Запрос строки
|
||||
/// </summary>
|
||||
/// <param name="table">Таблица</param>
|
||||
/// <returns>Число строк в таблице <paramref name="table"/></returns>
|
||||
Task<int> CountAsync (string table);
|
||||
/// <typeparam name="T">Тип передаваемого значения</typeparam>
|
||||
/// <param name="sql">Запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
|
||||
T? QueryRow<T> (string sql, object values);
|
||||
#endregion
|
||||
|
||||
#region Добавление строки в таблицу
|
||||
#region Получение данных
|
||||
|
||||
Task<TPit> InsertAsync<T, TPit> (string table, T entity, KeyValue<string, TPit> primaryIndex);
|
||||
/// <summary>
|
||||
/// Получает массив данных (SELECT * FROM...)
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип получаемых данных</typeparam>
|
||||
/// <param name="sql">SQL-запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Массив результата запроса</returns>
|
||||
Task<IEnumerable<T>> GetResultsAsync<T> (string sql, object values);
|
||||
|
||||
Task<bool> InsertUpdateAsync<T> (string table, T entity);
|
||||
/// <summary>
|
||||
/// Получает массив данных (SELECT * FROM...)
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип получаемых данных</typeparam>
|
||||
/// <param name="sql">SQL-запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Массив результата запроса</returns>
|
||||
IEnumerable<T> GetResults<T> (string sql, object values);
|
||||
|
||||
/// <summary>
|
||||
/// Получает строку в массиве данных
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип получаемых данных</typeparam>
|
||||
/// <param name="sql">SQL-запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Строки данных или null</returns>
|
||||
Task<T?> GetRowAsync<T> (string sql, object values);
|
||||
|
||||
/// <summary>
|
||||
/// Получает строку в массиве данных
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип получаемых данных</typeparam>
|
||||
/// <param name="sql">SQL-запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Строки данных или null</returns>
|
||||
T? GetRow<T> (string sql, object values);
|
||||
|
||||
/// <summary>
|
||||
/// Получает колонку в массиве данных
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип получаемых данных</typeparam>
|
||||
/// <param name="sql">SQL-запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Колонка данных или null</returns>
|
||||
Task<IEnumerable<T>> GetColAsync<T> (string sql, object values) where T : IComparable, IConvertible, IEquatable<T>;
|
||||
|
||||
/// <summary>
|
||||
/// Получает колонку в массиве данных
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип получаемых данных</typeparam>
|
||||
/// <param name="sql">SQL-запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Колонка данных или null</returns>
|
||||
IEnumerable<T> GetCol<T> (string sql, object values) where T : IComparable, IConvertible, IEquatable<T>;
|
||||
|
||||
/// <summary>
|
||||
/// Получение значение единичного поля
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип получаемых данных</typeparam>
|
||||
/// <param name="sql">SQL-запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Поле или null</returns>
|
||||
Task<T?> GetVarAsync<T> (string sql, object values) where T : IComparable, IConvertible, IEquatable<T>;
|
||||
|
||||
/// <summary>
|
||||
/// Получение значение единичного поля
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип получаемых данных</typeparam>
|
||||
/// <param name="sql">SQL-запрос</param>
|
||||
/// <param name="values">Данные запроса</param>
|
||||
/// <returns>Поле или null</returns>
|
||||
T? GetVar<T> (string sql, object values) where T : IComparable, IConvertible, IEquatable<T>;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Обновление строки в таблице
|
||||
#region CRUD данные
|
||||
/// <summary>
|
||||
/// Вставляет данные в таблицу
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Класс данных</typeparam>
|
||||
/// <param name="data">Данные</param>
|
||||
/// <param name="tableName">Имя таблицы</param>
|
||||
/// <returns>Результат выполнения</returns>
|
||||
Task<bool> InsertAsync<T> (T data, string tableName) where T : class;
|
||||
|
||||
Task<bool> UpdateAsync<T> (string table, T entity, KeyValue<string, string> where);
|
||||
/// <summary>
|
||||
/// Вставляет данные в таблицу
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Класс данных</typeparam>
|
||||
/// <param name="data">Данные</param>
|
||||
/// <param name="tableName">Имя таблицы</param>
|
||||
/// <returns>Результат выполнения</returns>
|
||||
bool Insert<T> (T data, string tableName) where T : class;
|
||||
|
||||
#endregion
|
||||
/// <summary>
|
||||
/// Обновляет строку в таблице
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Класс данных</typeparam>
|
||||
/// <param name="data">Данные</param>
|
||||
/// <param name="tableName">Имя таблицы</param>
|
||||
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
|
||||
/// <returns>Результат выполнения</returns>
|
||||
Task<bool> UpdateAsync<T> (T data, string tableName, string whereConditionColumn) where T : class;
|
||||
|
||||
#region Удаление строк
|
||||
/// <summary>
|
||||
/// Обновляет строку в таблице
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Класс данных</typeparam>
|
||||
/// <param name="data">Данные</param>
|
||||
/// <param name="tableName">Имя таблицы</param>
|
||||
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
|
||||
/// <returns>Результат выполнения</returns>
|
||||
bool Update<T> (T data, string tableName, string whereConditionColumn) where T : class;
|
||||
|
||||
Task<bool> DeleteAsync<T> (string table, KeyValue<string, string> where);
|
||||
/// <summary>
|
||||
/// Удаляет строки
|
||||
/// </summary>
|
||||
/// <param name="tableName">Имя таблицы</param>
|
||||
/// <param name="where">Условие</param>
|
||||
/// <returns>Результат выполнения</returns>
|
||||
Task<bool> DeleteAsync (string tableName, KeyValue<string, object> where);
|
||||
|
||||
Task<bool> DeleteRowAsync<T> (string table, KeyValue<string, string> where);
|
||||
/// <summary>
|
||||
/// Удаляет строки
|
||||
/// </summary>
|
||||
/// <param name="tableName">Имя таблицы</param>
|
||||
/// <param name="where">Условие</param>
|
||||
/// <returns>Результат выполнения</returns>
|
||||
bool Delete (string tableName, KeyValue<string, object> where);
|
||||
|
||||
/// <summary>
|
||||
/// Удаляет строку
|
||||
/// </summary>
|
||||
/// <param name="tableName">Имя таблицы</param>
|
||||
/// <param name="where">Условие</param>
|
||||
/// <returns>Результат выполнения</returns>
|
||||
Task<bool> DeleteRowAsync (string tableName, KeyValue<string, object> where);
|
||||
|
||||
/// <summary>
|
||||
/// Удаляет строку
|
||||
/// </summary>
|
||||
/// <param name="tableName">Имя таблицы</param>
|
||||
/// <param name="where">Условие</param>
|
||||
/// <returns>Результат выполнения</returns>
|
||||
bool DeleteRow (string tableName, KeyValue<string, object> where);
|
||||
#endregion
|
||||
}
|
Reference in New Issue
Block a user