From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。
---
HotelPms.Data.Client/GrpcClient.cs | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 173 insertions(+), 0 deletions(-)
diff --git a/HotelPms.Data.Client/GrpcClient.cs b/HotelPms.Data.Client/GrpcClient.cs
new file mode 100644
index 0000000..c99a6bd
--- /dev/null
+++ b/HotelPms.Data.Client/GrpcClient.cs
@@ -0,0 +1,173 @@
+using HotelPms.Data.Common;
+using HotelPms.Share.Util;
+using Grpc.Core;
+using Grpc.Net.Client;
+using System;
+using System.Threading.Tasks;
+
+namespace HotelPms.Data.Client
+{
+ public class GrpcClient
+ {
+ /// <summary>
+ /// データ要求生成
+ /// </summary>
+ /// <param name="actionType"></param>
+ /// <param name="data"></param>
+ /// <returns></returns>
+ public static DataRequest CreateDataRequest(int actionType, string data)
+ {
+ return new DataRequest
+ {
+ ActionType = actionType,
+ Data = data,
+ CustomerID = "001",
+ LoginID = "sa",
+ Password = "123",
+ SystemID = 1,
+ RefTables = string.Empty,
+ IP = "127.0.0.1",
+ MachineName = Environment.MachineName,
+ OS = Environment.OSVersion.ToString()
+ };
+ }
+
+ /// <summary>
+ /// TableのgRPCクライアント
+ /// </summary>
+ /// <param name="channel"></param>
+ /// <returns></returns>
+ public static GrpcTableCore.GrpcTableCoreClient CreateTableClient(GrpcChannel channel)
+ {
+ return new GrpcTableCore.GrpcTableCoreClient(channel);
+ }
+
+ public static async Task<GrpcTable> GetTableAsync(GrpcChannel channel, int actionType, string data)
+ {
+ GrpcTableCore.GrpcTableCoreClient client = CreateTableClient(channel);
+ return await client.GetDataAsync(CreateDataRequest(actionType, data));
+ }
+
+ /// <summary>
+ /// TableのgRPCクライアント
+ /// </summary>
+ /// <param name="client"></param>
+ /// <param name="actionType"></param>
+ /// <param name="data"></param>
+ /// <returns></returns>
+ public static GrpcTable GetTable(GrpcChannel channel, int actionType, string data)
+ {
+ GrpcTableCore.GrpcTableCoreClient client = CreateTableClient(channel);
+ return client.GetData(CreateDataRequest(actionType, data));
+ }
+
+ /// <summary>
+ /// 自由SQL発行
+ /// </summary>
+ /// <param name="client"></param>
+ /// <param name="sql"></param>
+ /// <returns></returns>
+ public static GrpcTable GetTable(GrpcChannel channel, string sql)
+ {
+ return GetTable(channel, (int)ETableActionType.CustomSql, sql);
+ }
+
+ /// <summary>
+ /// 0行、0列の値を返す(同期)
+ /// </summary>
+ /// <param name="channel"></param>
+ /// <param name="sql"></param>
+ /// <returns></returns>
+ public static string ExecuteScalarSync(GrpcChannel channel, string sql)
+ {
+ GrpcTable table = GetTable(channel, sql);
+ if (table.ErrNo != 0) { return string.Empty; }
+ return CConvert.ToString(table.ToDataTable().Rows[0][0]);
+ }
+
+ /// <summary>
+ /// 0行、0列の値を返す
+ /// </summary>
+ /// <param name="sql"></param>
+ /// <returns></returns>
+ public static async Task<string> ExecuteScalar(GrpcChannel channel, string sql)
+ {
+ GrpcTableCore.GrpcTableCoreClient client = CreateTableClient(channel);
+ GrpcTable table = await client.GetDataAsync(CreateDataRequest((int)ETableActionType.CustomSql, sql));
+ if (table.ErrNo != 0) { return string.Empty; }
+ return CConvert.ToString(table.ToDataTable().Rows[0][0]);
+ }
+
+ /// <summary>
+ /// データの取得
+ /// </summary>
+ /// <param name="actionType"></param>
+ /// <param name="data"></param>
+ /// <returns></returns>
+ public static async Task<GrpcTable> GetTableStream(GrpcChannel channel, int actionType, string data)
+ {
+ GrpcTableCore.GrpcTableCoreClient client = CreateTableClient(channel);
+ GrpcTable table = null;
+ using (var call = client.GetDataStream())
+ {
+ await call.RequestStream.WriteAsync(CreateDataRequest(actionType, data));
+ await call.RequestStream.CompleteAsync(); // Finish call and report results
+
+ //データの取得
+ await foreach (var message in call.ResponseStream.ReadAllAsync<GrpcTable>())
+ {
+ table = message;
+ break;
+ }
+ }
+ return table;
+ }
+
+ public static async Task<GrpcTable> GetTableStream(GrpcChannel channel, string sql)
+ {
+ return await GetTableStream(channel, (int)ETableActionType.CustomSql, sql);
+ }
+
+ /// <summary>
+ /// データセットのgRPCクライアント
+ /// </summary>
+ /// <param name="channel"></param>
+ /// <returns></returns>
+ public static GrpcSetCore.GrpcSetCoreClient CreateSetClient(GrpcChannel channel)
+ {
+ return new GrpcSetCore.GrpcSetCoreClient(channel);
+ }
+
+ public async static Task<GrpcSet> GetGrpcSet(GrpcChannel channel, int actionType, string data)
+ {
+ GrpcSetCore.GrpcSetCoreClient client = CreateSetClient(channel);
+ return await client.GetDataAsync(CreateDataRequest(actionType, data));
+ }
+
+ /// <summary>
+ /// データセットの取得
+ /// </summary>
+ /// <param name="client"></param>
+ /// <param name="actionType"></param>
+ /// <param name="data"></param>
+ /// <returns></returns>
+ public async static Task<GrpcSet> GetDataSet(GrpcChannel channel, int actionType, string data)
+ {
+ GrpcSetCore.GrpcSetCoreClient client = CreateSetClient(channel);
+ GrpcSet set = null;
+ using (var call = client.GetDataStream())
+ {
+ await call.RequestStream.WriteAsync(CreateDataRequest(actionType, data));
+ await call.RequestStream.CompleteAsync(); // Finish call and report results
+
+ //データの取得
+ await foreach (var message in call.ResponseStream.ReadAllAsync<GrpcSet>())
+ {
+ set = message;
+ break;
+ }
+ }
+ return set;
+ }
+ }
+}
--
Gitblit v1.10.0