//
// Created by the DataSnap proxy generator.
// 24.02.2024 15:28:54
//

unit fs02iopCln_03_ClnClasses;

interface

uses System.JSON, Data.DBXCommon, Data.DBXClient, Data.DBXDataSnap, Data.DBXJSON, Datasnap.DSProxy, System.Classes, System.SysUtils, Data.DB, Data.SqlExpr, Data.DBXDBReaders, Data.DBXCDSReaders, Data.DBXJSONReflect;

type
  TServerMethods1Client = class(TDSAdminClient)
  private
    FEchoStringCommand: TDBXCommand;
    FReverseStringCommand: TDBXCommand;
    FFS_Scripts_ListCommand: TDBXCommand;
    FFS_Script_CommentCommand: TDBXCommand;
    FFS_Script_InfoCommand: TDBXCommand;
    FFS_Script_ParamsInCommand: TDBXCommand;
    FFS_Script_ParamsOutCommand: TDBXCommand;
    FFS_Script_ExecuteCommand: TDBXCommand;
  public
    constructor Create(ADBXConnection: TDBXConnection); overload;
    constructor Create(ADBXConnection: TDBXConnection; AInstanceOwner: Boolean); overload;
    destructor Destroy; override;

    //-----------------------------------
    //Методы по умолчанию
    //(можно использовать для тестирования)
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;
    //-----------------------------------

    //-----------------------------------
    //"Наши" методы...   :-)
    //Список запрос на получение списка FS-скриптов
    function FS_Scripts_List: string;
    //FS-скрипт: запрос на получение комментария к скрипту
    function FS_Script_Comment(sMnemo: string): string;
    //FS-скрипт: запрос на получение описания скрипта
    function FS_Script_Info(sMnemo: string): string;
    //FS-скрипт: запрос на получение списка входных параметров FSI
    function FS_Script_ParamsIn(sMnemo: string): string;
    //FS-скрипт: запрос на получение списка вЫходных параметров FSI
    function FS_Script_ParamsOut(sMnemo: string): string;
    //FS-скрипт: запрос на выполнение скрипта
    function FS_Script_Execute(sMnemo: string; sParamsIn: string; sParamsOut: string): string;
    //-----------------------------------

  end;

implementation

//********************************************
//Методы, созданные по умолчанию (можно использовать для тестирования)
function TServerMethods1Client.EchoString(Value: string): string;
begin
  if FEchoStringCommand = nil then
  begin
    FEchoStringCommand := FDBXConnection.CreateCommand;
    FEchoStringCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FEchoStringCommand.Text := 'TServerMethods1.EchoString';
    FEchoStringCommand.Prepare;
  end;
  FEchoStringCommand.Parameters[0].Value.SetWideString(Value);
  FEchoStringCommand.ExecuteUpdate;
  Result := FEchoStringCommand.Parameters[1].Value.GetWideString;
end;
function TServerMethods1Client.ReverseString(Value: string): string;
begin
  if FReverseStringCommand = nil then
  begin
    FReverseStringCommand := FDBXConnection.CreateCommand;
    FReverseStringCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FReverseStringCommand.Text := 'TServerMethods1.ReverseString';
    FReverseStringCommand.Prepare;
  end;
  FReverseStringCommand.Parameters[0].Value.SetWideString(Value);
  FReverseStringCommand.ExecuteUpdate;
  Result := FReverseStringCommand.Parameters[1].Value.GetWideString;
end;
//********************************************


//********************************************
//"Наши" методы...   :-)

function TServerMethods1Client.FS_Scripts_List: string;
//Список запрос на получение списка FS-скриптов
begin
  if FFS_Scripts_ListCommand = nil then
  begin
    FFS_Scripts_ListCommand := FDBXConnection.CreateCommand;
    FFS_Scripts_ListCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FFS_Scripts_ListCommand.Text := 'TServerMethods1.FS_Scripts_List';
    FFS_Scripts_ListCommand.Prepare;
  end;
  FFS_Scripts_ListCommand.ExecuteUpdate;
  Result := FFS_Scripts_ListCommand.Parameters[0].Value.GetWideString;
end;

function TServerMethods1Client.FS_Script_Comment(sMnemo: string): string;
//FS-скрипт: запрос на получение комментария к скрипту
begin
  if FFS_Script_CommentCommand = nil then
  begin
    FFS_Script_CommentCommand := FDBXConnection.CreateCommand;
    FFS_Script_CommentCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FFS_Script_CommentCommand.Text := 'TServerMethods1.FS_Script_Comment';
    FFS_Script_CommentCommand.Prepare;
  end;
  FFS_Script_CommentCommand.Parameters[0].Value.SetWideString(sMnemo);
  FFS_Script_CommentCommand.ExecuteUpdate;
  Result := FFS_Script_CommentCommand.Parameters[1].Value.GetWideString;
end;

function TServerMethods1Client.FS_Script_Info(sMnemo: string): string;
//FS-скрипт: запрос на получение описания скрипта
begin
  if FFS_Script_InfoCommand = nil then
  begin
    FFS_Script_InfoCommand := FDBXConnection.CreateCommand;
    FFS_Script_InfoCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FFS_Script_InfoCommand.Text := 'TServerMethods1.FS_Script_Info';
    FFS_Script_InfoCommand.Prepare;
  end;
  FFS_Script_InfoCommand.Parameters[0].Value.SetWideString(sMnemo);
  FFS_Script_InfoCommand.ExecuteUpdate;
  Result := FFS_Script_InfoCommand.Parameters[1].Value.GetWideString;
end;

function TServerMethods1Client.FS_Script_ParamsIn(sMnemo: string): string;
//FS-скрипт: запрос на получение списка входных параметров FSI
begin
  if FFS_Script_ParamsInCommand = nil then
  begin
    FFS_Script_ParamsInCommand := FDBXConnection.CreateCommand;
    FFS_Script_ParamsInCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FFS_Script_ParamsInCommand.Text := 'TServerMethods1.FS_Script_ParamsIn';
    FFS_Script_ParamsInCommand.Prepare;
  end;
  FFS_Script_ParamsInCommand.Parameters[0].Value.SetWideString(sMnemo);
  FFS_Script_ParamsInCommand.ExecuteUpdate;
  Result := FFS_Script_ParamsInCommand.Parameters[1].Value.GetWideString;
end;

function TServerMethods1Client.FS_Script_ParamsOut(sMnemo: string): string;
//FS-скрипт: запрос на получение списка вЫходных параметров FSI
begin
  if FFS_Script_ParamsOutCommand = nil then
  begin
    FFS_Script_ParamsOutCommand := FDBXConnection.CreateCommand;
    FFS_Script_ParamsOutCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FFS_Script_ParamsOutCommand.Text := 'TServerMethods1.FS_Script_ParamsOut';
    FFS_Script_ParamsOutCommand.Prepare;
  end;
  FFS_Script_ParamsOutCommand.Parameters[0].Value.SetWideString(sMnemo);
  FFS_Script_ParamsOutCommand.ExecuteUpdate;
  Result := FFS_Script_ParamsOutCommand.Parameters[1].Value.GetWideString;
end;

function TServerMethods1Client.FS_Script_Execute(sMnemo: string; sParamsIn: string; sParamsOut: string): string;
//FS-скрипт: запрос на выполнение скрипта
begin
  if FFS_Script_ExecuteCommand = nil then
  begin
    FFS_Script_ExecuteCommand := FDBXConnection.CreateCommand;
    FFS_Script_ExecuteCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FFS_Script_ExecuteCommand.Text := 'TServerMethods1.FS_Script_Execute';
    FFS_Script_ExecuteCommand.Prepare;
  end;
  FFS_Script_ExecuteCommand.Parameters[0].Value.SetWideString(sMnemo);
  FFS_Script_ExecuteCommand.Parameters[1].Value.SetWideString(sParamsIn);
  FFS_Script_ExecuteCommand.Parameters[2].Value.SetWideString(sParamsOut);
  FFS_Script_ExecuteCommand.ExecuteUpdate;
  Result := FFS_Script_ExecuteCommand.Parameters[3].Value.GetWideString;
end;
//********************************************


constructor TServerMethods1Client.Create(ADBXConnection: TDBXConnection);
begin
  inherited Create(ADBXConnection);
end;

constructor TServerMethods1Client.Create(ADBXConnection: TDBXConnection; AInstanceOwner: Boolean);
begin
  inherited Create(ADBXConnection, AInstanceOwner);
end;

destructor TServerMethods1Client.Destroy;
begin
  FEchoStringCommand.DisposeOf;
  FReverseStringCommand.DisposeOf;
  FFS_Scripts_ListCommand.DisposeOf;
  FFS_Script_CommentCommand.DisposeOf;
  FFS_Script_InfoCommand.DisposeOf;
  FFS_Script_ParamsInCommand.DisposeOf;
  FFS_Script_ParamsOutCommand.DisposeOf;
  FFS_Script_ExecuteCommand.DisposeOf;
  inherited;
end;

end.