diff --git a/src/Plugins/BotSharp.Plugin.Membase/Interfaces/IMembaseApi.cs b/src/Plugins/BotSharp.Plugin.Membase/Interfaces/IMembaseApi.cs index 86a5e4875..8ab05160d 100644 --- a/src/Plugins/BotSharp.Plugin.Membase/Interfaces/IMembaseApi.cs +++ b/src/Plugins/BotSharp.Plugin.Membase/Interfaces/IMembaseApi.cs @@ -62,4 +62,9 @@ public interface IMembaseApi [Post("/graph/{graphId}/pgt-external/{correlationId}/complete")] Task CompletePgtExternalAsync(string graphId, string correlationId, [FromBody] object emptyBody); #endregion + + #region Procedure + [Post("/graph/{graphId}/procedures/{procedureName}/execute")] + Task ExecuteProcedureAsync(string graphId, string procedureName, [Body] ProcedureExecuteRequest? request = null); + #endregion } diff --git a/src/Plugins/BotSharp.Plugin.Membase/Models/Requests/ProcedureExecuteRequest.cs b/src/Plugins/BotSharp.Plugin.Membase/Models/Requests/ProcedureExecuteRequest.cs new file mode 100644 index 000000000..e23843aaf --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.Membase/Models/Requests/ProcedureExecuteRequest.cs @@ -0,0 +1,6 @@ +namespace BotSharp.Plugin.Membase.Models; + +public class ProcedureExecuteRequest +{ + public Dictionary Parameters { get; set; } = []; +} diff --git a/src/Plugins/BotSharp.Plugin.Membase/Models/Responses/ProcedureExecuteResponse.cs b/src/Plugins/BotSharp.Plugin.Membase/Models/Responses/ProcedureExecuteResponse.cs new file mode 100644 index 000000000..796d50eb8 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.Membase/Models/Responses/ProcedureExecuteResponse.cs @@ -0,0 +1,21 @@ +using System.Text.Json.Serialization; + +namespace BotSharp.Plugin.Membase.Models; + +public class ProcedureExecuteResponse +{ + public string[] Columns { get; set; } = []; + public Dictionary[] Data { get; set; } = []; + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public PgtStatistics? Statistics { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public object? ExecutionPlan { get; set; } + + public CypherNotification[] Notifications { get; set; } = []; + public int RowCount { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public DateTime? ExecutedAt { get; set; } +}