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