ibms-dome/Repository/BaseRepository/Interface/IBaseRepository.cs

186 lines
8.2 KiB
C#
Raw Normal View History

2022-10-14 16:08:54 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Repository.BaseRepository.Interface
{
public interface IBaseRepository
{
/// <summary>
/// 新增table一筆資料
/// dictionary ex:{"@guid", Guid.NewGuid()}
/// </summary>
/// <param name="dict">新增資料庫名稱以及值</param>
/// <param name="Table_name">資料表名稱</param>
/// <returns>
/// </returns>
Task AddOneByCustomTable(Dictionary<string, object> dict, string Table_name);
/// <summary>
/// 透過guid軟刪除單一筆資料
/// <para>UPDATE {tableName} SET deleted = 1 WHERE {idName} = @Guid</para>
/// </summary>
/// <param name="guid"></param>
/// <param name="tableName"></param>
/// <param name="idName"></param>
/// <returns></returns>
Task DeleteOne(string guid, string tableName, string idName);
/// <summary>
/// 透過guid、db_name、table_name刪除指定的資料庫之資料表的一筆資料
/// <para>UPDATE {db_name}.{table_name} SET Deleted = 1 WHERE {idName} = @Guid</para>
/// </summary>
/// <param name="guid"></param>
/// <param name="db_name"></param>
/// <param name="table_name"></param>
/// <param name="idName"></param>
/// <returns></returns>
Task DeleteOneByGuidWithCustomDBNameAndTable(string guid, string db_name, string table_name, string idName);
/// <summary>
/// 根據Where條件進行刪除
/// <para>DELETE FROM {table_name} WHERE {sWhere}</para>
/// </summary>
/// <param name="table_name"></param>
/// <param name="sWhere"></param>
/// <returns></returns>
Task PurgeOneByGuidWithCustomDBNameAndTable(string table_name, string sWhere);
/// <summary>
/// 指定單一欄位,實際刪除單一筆資料
/// <para>DELETE FROM {table_name} WHERE {idName} = @Guid</para>
/// </summary>
/// <param name="guid"></param>
/// <param name="table_name"></param>
/// <param name="idName"></param>
/// <returns></returns>
Task PurgeOneAsync(string guid, string table_name, string idName);
/// <summary>
/// 取得所有資料(根據條件以及排序) 不需要則填where為""
/// <para>SELECT * FROM {tableName} WHERE {sWhere} </para>
/// </summary>
/// <typeparam name="A"></typeparam>
/// <param name="tableName"></param>
/// <param name="sWhere"></param>
/// <param name="param">Ex: new { status = 1}</param>
/// <param name="sOrderBy"></param>
/// <returns></returns>
Task<List<A>> GetAllAsync<A>(string tableName, string sWhere, object param = null, string sOrderBy = "");
/// <summary>
/// 根據SQL語句抓取整包資料
/// </summary>
/// <typeparam name="A"></typeparam>
/// <param name="sqlString"></param>
/// <param name="param">Ex: new { status = 1}</param>
/// <returns></returns>
Task<List<A>> GetAllAsync<A>(string sqlString, object param = null);
/// <summary>
/// 取得單一筆資料(排序),不需OrderBy填""
/// <para>SELECT * FROM {tableName} WHERE {sWhere} ORDER BY {sOrderBy}</para>
/// </summary>
/// <typeparam name="A"></typeparam>
/// <param name="tableName"></param>
/// <param name="sWhere"></param>
/// <param name="param"></param>
/// <param name="sOrderBy"></param>
/// <returns></returns>
Task<A> GetOneAsync<A>(string tableName, string sWhere, object param = null, string sOrderBy = "");
/// <summary>
/// 取得單一筆資料某一欄位(排序)不需sWhere及sOrderBy填""
/// <para>
/// SELECT {selCol} FROM {tableName} WHERE {sWhere} ORDER BY {sOrderBy}
/// </para>
/// </summary>
/// <param name="tableName"></param>
/// <param name="sWhere"></param>
/// <param name="sOrderBy"></param>
/// <param name="selCol">填放欄位</param>
/// <returns></returns>
Task<object> GetOneAsync(string tableName, string sWhere, string selCol, object param = null, string sOrderBy = "");
/// <summary>
/// 取得單一筆資料(根據自訂SQL, 自訂參數)
/// </summary>
/// <param name="sqlString"></param>
/// <param name="param"></param>
/// <returns></returns>
Task<A> GetOneAsync<A>(string sqlString, object param = null);
/// <summary>
/// 取得多筆資料的某個欄位變成列表
/// <para>SELECT {selCol} FROM {table_name} WHERE {idName} = @Guid</para>
/// </summary>
/// <param name="guid">流水號</param>
/// <param name="table_name">資料表名稱</param>
/// <param name="idName">指定欄位名稱的流水號</param>
/// <param name="selCol">選擇陣列資料庫欄位名稱</param>
/// <returns></returns>
Task<List<object>> GetAllWithCustomDBNameAndTableAsync(string guid, string table_name, string idName, string selCol);
/// <summary>
/// 取資料表當前流水號
/// <para>SELECT SerialNumber FROM {Table_name} WHERE {where} ORDER BY SerialNumber DESC</para>
/// </summary>
/// <param name="Table_name"></param>
/// <param name="where"></param>
/// <returns></returns>
Task<string> GetCurrentSerialNumber(string Table_name, string where = "");
/// <summary>
/// 取資料表當前優先序
/// <para>SELECT Priority FROM {Table_name} WHERE {where} ORDER BY Priority DESC</para>
/// </summary>
/// <param name="Table_name"></param>
/// <param name="where"></param>
/// <returns></returns>
Task<int> GetCurrentPriority(string Table_name, string where = "");
/// <summary>
/// 新增Table多筆資料
/// dictionary ex:{"@guid", Guid.NewGuid()}
/// </summary>
/// <param name="dict"></param>
/// <param name="Table_name"></param>
/// <returns></returns>
Task AddMutiByCustomTable(List<Dictionary<string, object>> dict, string Table_name);
/// <summary>
/// 透過Guid來搜尋此筆資料是否存在
/// <para>SELECT * FROM {Table_name} WHERE {id_name} = @Guid</para>
/// </summary>
/// <param name="guid">guid值</param>
/// <param name="Table_name">table名稱</param>
/// <param name="id_name">id名稱</param>
/// <returns></returns>
Task<Boolean> HasExistsWithGuid(string guid, string Table_name, string id_name);
/// <summary>
/// 根據SQL條件搜尋此筆資料是否存在
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
Task<Boolean> HasExistsWithParam(string sql, object param = null);
/// <summary>
/// 更新Table一筆資料
/// </summary>
/// <param name="dict">更新資料庫名稱以及值</param>
/// <param name="Table_name">資料表名稱</param>
/// <param name="sWhere">Where條件</param>
/// <returns></returns>
Task UpdateOneByCustomTable(Dictionary<string, object> dict, string Table_name, string sWhere);
/// <summary>
/// 更新Table多筆資料
/// </summary>
/// <param name="dicts">更新資料庫名稱以及值</param>
/// <param name="Table_name">資料表名稱</param>
/// <param name="sWhere">Where條件</param>
/// <returns></returns>
Task UpdateListByCustomTable(List<Dictionary<string, object>> dicts, string Table_name, string sWhere);
Task ExecuteSql(string sql, object param = null);
/// <summary>
/// 新增table一筆資料
/// dictionary ex:{"@guid", Guid.NewGuid()}
/// </summary>
/// <param name="dict">新增資料庫名稱以及值</param>
/// <param name="Table_name">資料表名稱</param>
/// <returns>
/// </returns>
Task<int> AddOneByCustomTableReturnId(Dictionary<string, object> dict, string Table_name, bool returnId = true);
}
}