ibms-dome/Repository/BaseRepository/Interface/IBaseRepository.cs
2023-01-04 10:54:34 +08:00

205 lines
9.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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>
/// 取得單一筆資料某一欄位(排序)不需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<string> GetOneColAsync(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);
/// <summary>
/// 清空table資料
/// </summary>
/// <param name="table_name">資料表名稱</param>
/// <returns>
/// </returns>
Task TruncateTable(string table_name);
}
}