diff --git a/packages/fcl-web/src/restbridge/sqldbrestini.pp b/packages/fcl-web/src/restbridge/sqldbrestini.pp index 86a60685cd..feed9eab71 100644 --- a/packages/fcl-web/src/restbridge/sqldbrestini.pp +++ b/packages/fcl-web/src/restbridge/sqldbrestini.pp @@ -50,7 +50,8 @@ Type dioDisableSchemas, // Do not enable schemas dioSkipWriteConnections, // Do not write connection definitions dioSkipWriteSchemas, // Do not Read schema definitions - dioSkipBasicAuth // Do not read/write basic auth data. + dioSkipBasicAuth, // Do not read/write basic auth data. + dioSkipStringConfig // Do not read strings config ); TDispatcherIniOptions = set of TDispatcherIniOption; @@ -73,6 +74,20 @@ Type Procedure SaveToIni(Const aIni: TCustomIniFile; ASection : String; aOptions : TDispatcherIniOptions); overload; end; + { TRestStringsConfigHelper } + + TRestStringsConfigHelper = class helper for TRestStringsConfig + Public + Procedure LoadFromIni(Const aIni: TCustomIniFile); overload; + Procedure LoadFromIni(Const aIni: TCustomIniFile; ASection : String); overload; + Procedure LoadFromFile(Const aFileName : String); overload; + Procedure LoadFromFile(Const aFileName : String; Const ASection : String); overload; + Procedure SaveToFile(Const aFileName : String);overload; + Procedure SaveToFile(Const aFileName : String; Const ASection : String);overload; + Procedure SaveToIni(Const aIni: TCustomIniFile); overload; + Procedure SaveToIni(Const aIni: TCustomIniFile; ASection : String); overload; + end; + Function StrToOutputOptions(S : String) : TRestOutputOptions; Function StrToDispatcherOptions(S : String) : TRestDispatcherOptions; @@ -85,6 +100,7 @@ Var TrivialEncryptKey : String = 'SQLDB'; DefaultConnectionSection : String = 'Connection'; DefaultDispatcherSection : String = 'Dispatcher'; + DefaultStringsConfigSection : String = 'Dispatcher_strings'; implementation @@ -172,6 +188,86 @@ begin Result:=SetToString(PTypeInfo(TypeInfo(TConnectionIniOptions)),Integer(Options),false); end; +{ TRestStringsConfigHelper } + +procedure TRestStringsConfigHelper.LoadFromIni(const aIni: TCustomIniFile); +begin + LoadFromIni(aIni,DefaultStringsConfigSection); +end; + +procedure TRestStringsConfigHelper.LoadFromIni(const aIni: TCustomIniFile; ASection: String); + +Var + T : TRestStringProperty; + N : String; + S : UTF8String; + +begin + For T in TRestStringProperty do + begin + Str(T,N); + Delete(N,1,2); + S:=aIni.ReadString(aSection, N, GetRestString(T)); + SetRestString(T,S); + end; +end; + +procedure TRestStringsConfigHelper.LoadFromFile(const aFileName: String); +begin + LoadFromFile(aFileName,DefaultStringsConfigSection); +end; + +procedure TRestStringsConfigHelper.LoadFromFile(const aFileName: String; const ASection: String); +Var + Ini : TCustomIniFile; + +begin + Ini:=TMeminiFile.Create(aFileName); + try + LoadFromIni(Ini,aSection); + finally + Ini.Free; + end; +end; + +procedure TRestStringsConfigHelper.SaveToFile(const aFileName: String); +begin + SaveToFile(aFileName,DefaultStringsConfigSection); +end; + +procedure TRestStringsConfigHelper.SaveToFile(const aFileName: String; const ASection: String); +Var + Ini : TCustomIniFile; + +begin + Ini:=TMeminiFile.Create(aFileName); + try + SaveToIni(Ini,aSection); + Ini.UpdateFile; + finally + Ini.Free; + end; +end; + +procedure TRestStringsConfigHelper.SaveToIni(const aIni: TCustomIniFile); +begin + SaveToini(aIni,DefaultStringsConfigSection); +end; + +procedure TRestStringsConfigHelper.SaveToIni(const aIni: TCustomIniFile; ASection: String); +Var + T : TRestStringProperty; + N : String; + +begin + For T in TRestStringProperty do + begin + Str(T,N); + Delete(N,1,2); + aIni.WriteString(aSection, N, GetRestString(T)); + end; +end; + { TSQLDBRestDispatcherHelper } @@ -327,6 +423,8 @@ begin Self.Authenticator:=BA; end; end; + if not (dioSkipStringConfig in aOptions) then + Strings.LoadFromIni(aIni,aSection+'_strings'); end; procedure TSQLDBRestDispatcherHelper.LoadFromFile(const aFileName: String; aOptions: TDispatcherIniOptions); @@ -361,6 +459,7 @@ begin Ini:=TMeminiFile.Create(aFileName); try SaveToIni(Ini,aSection,aOptions); + Ini.UpdateFile; finally Ini.Free; end; @@ -396,7 +495,8 @@ begin TRestBasicAuthenticator(Authenticator).SaveToIni(aIni,BAN,[]); aIni.WriteString(aSection,KeyBasicAuth,BAN); end; - Aini.UpdateFile; + if not (dioSkipStringConfig in aOptions) then + Strings.SaveToIni(aIni,aSection+'_strings'); end; { TSQLDBRestConnectionHelper } @@ -512,6 +612,7 @@ begin Ini:=TMeminiFile.Create(aFileName); try SaveToini(Ini,aSection,aOptions); + Ini.UpdateFile; finally Ini.Free; end;