Bladeren bron

[dataInfluxDB] small refactory

Exilon 5 jaren geleden
bovenliggende
commit
4601c4cd79
1 gewijzigde bestanden met toevoegingen van 22 en 16 verwijderingen
  1. 22 16
      Quick.Data.InfluxDB.pas

+ 22 - 16
Quick.Data.InfluxDB.pas

@@ -1,13 +1,13 @@
 { ***************************************************************************
 { ***************************************************************************
 
 
-  Copyright (c) 2016-2019 Kike Pérez
+  Copyright (c) 2016-2020 Kike Pérez
 
 
   Unit        : Quick.Data.InfluxDB
   Unit        : Quick.Data.InfluxDB
   Description : InfluxDB data provider
   Description : InfluxDB data provider
   Author      : Kike Pérez
   Author      : Kike Pérez
   Version     : 1.0
   Version     : 1.0
   Created     : 05/04/2019
   Created     : 05/04/2019
-  Modified    : 10/04/2019
+  Modified    : 21/04/2020
 
 
   This file is part of QuickLogger: https://github.com/exilon/QuickLogger
   This file is part of QuickLogger: https://github.com/exilon/QuickLogger
 
 
@@ -37,6 +37,7 @@ uses
   Classes,
   Classes,
   SysUtils,
   SysUtils,
   DateUtils,
   DateUtils,
+  Quick.Collections,
   Quick.HttpClient,
   Quick.HttpClient,
   Quick.Commons,
   Quick.Commons,
   Quick.Value,
   Quick.Value,
@@ -57,7 +58,7 @@ type
     fTags : TPairArray;
     fTags : TPairArray;
     fCreateDataBaseIfNotExists : Boolean;
     fCreateDataBaseIfNotExists : Boolean;
     procedure CreateDataBase;
     procedure CreateDataBase;
-    function GenerateWriteQuery(const aMeasurement : string; aTagPairs : TPairArray; aFieldPairs : TFlexPairArray; aTime : TDateTime): string;
+    function GenerateWriteQuery(const aMeasurement : string; aTagPairs : IList<TPair>; aFieldPairs : IList<TFlexPair>; aTime : TDateTime): string;
     procedure SetWriteURL;
     procedure SetWriteURL;
     procedure SetPassword(const Value: string);
     procedure SetPassword(const Value: string);
     procedure SetUserName(const Value: string);
     procedure SetUserName(const Value: string);
@@ -74,8 +75,9 @@ type
     property Tags : TPairArray read fTags write fTags;
     property Tags : TPairArray read fTags write fTags;
     procedure Init; override;
     procedure Init; override;
     procedure Restart; override;
     procedure Restart; override;
-    procedure Write(const aMeasurement : string; aFieldPairs : TFlexPairArray; aTime : TDateTime = 0); overload;
-    procedure Write(const aMeasurement : string; aTagPairs : TPairArray; aFieldPairs : TFlexPairArray; aTime : TDateTime = 0); overload;
+    procedure Stop; override;
+    procedure Write(const aMeasurement : string; aFieldPairs : IList<TFlexPair>; aTime : TDateTime = 0); overload;
+    procedure Write(const aMeasurement: string; aTagPairs : IList<TPair>; aFieldPairs: IList<TFlexPair>; aTime: TDateTime); overload;
     procedure Write(const aMeasurement: string; const aFieldKey : string; aFieldValue : TFlexValue; aTime: TDateTime); overload;
     procedure Write(const aMeasurement: string; const aFieldKey : string; aFieldValue : TFlexValue; aTime: TDateTime); overload;
   end;
   end;
 
 
@@ -97,15 +99,13 @@ end;
 
 
 destructor TInfluxDBData.Destroy;
 destructor TInfluxDBData.Destroy;
 begin
 begin
-  if Assigned(fHTTPClient) then FreeAndNil(fHTTPClient);
-
+  if Assigned(fHTTPClient) then fHTTPClient.Free;
   inherited;
   inherited;
 end;
 end;
 
 
 procedure TInfluxDBData.Init;
 procedure TInfluxDBData.Init;
 begin
 begin
   if fInitiated then Stop;
   if fInitiated then Stop;
-
   SetWriteURL;
   SetWriteURL;
   fHTTPClient := TJsonHTTPClient.Create;
   fHTTPClient := TJsonHTTPClient.Create;
   fHTTPClient.ContentType := 'application/json';
   fHTTPClient.ContentType := 'application/json';
@@ -137,22 +137,28 @@ begin
     else fFullURL := Format('%s/write?db=%s&precision=ms',[fURL,fDataBase]);
     else fFullURL := Format('%s/write?db=%s&precision=ms',[fURL,fDataBase]);
 end;
 end;
 
 
+procedure TInfluxDBData.Stop;
+begin
+  inherited;
+  if Assigned(fHTTPClient) then FreeAndNil(fHTTPClient);
+end;
+
 procedure TInfluxDBData.Write(const aMeasurement: string; const aFieldKey : string; aFieldValue : TFlexValue; aTime: TDateTime);
 procedure TInfluxDBData.Write(const aMeasurement: string; const aFieldKey : string; aFieldValue : TFlexValue; aTime: TDateTime);
 var
 var
-  fparray : TFlexPairArray;
+  fields : IList<TFlexPair>;
 begin
 begin
-  fparray.Add(aFieldKey,aFieldValue);
-  if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,nil,fparray,aTime))
-    else Write(GenerateWriteQuery(aMeasurement,nil,fparray,Now()));
+  fields.Add(TFlexPair.Create(aFieldKey,aFieldValue));
+  if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,nil,fields,aTime))
+    else Write(GenerateWriteQuery(aMeasurement,nil,fields,Now()));
 end;
 end;
 
 
-procedure TInfluxDBData.Write(const aMeasurement: string; aTagPairs : TPairArray; aFieldPairs: TFlexPairArray; aTime: TDateTime);
+procedure TInfluxDBData.Write(const aMeasurement: string; aTagPairs : IList<TPair>; aFieldPairs: IList<TFlexPair>; aTime: TDateTime);
 begin
 begin
   if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,aTagPairs,aFieldPairs,aTime))
   if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,aTagPairs,aFieldPairs,aTime))
     else Write(GenerateWriteQuery(aMeasurement,aTagPairs,aFieldPairs,Now()));
     else Write(GenerateWriteQuery(aMeasurement,aTagPairs,aFieldPairs,Now()));
 end;
 end;
 
 
-procedure TInfluxDBData.Write(const aMeasurement: string; aFieldPairs: TFlexPairArray; aTime: TDateTime);
+procedure TInfluxDBData.Write(const aMeasurement: string; aFieldPairs: IList<TFlexPair>; aTime: TDateTime);
 begin
 begin
   if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,nil,aFieldPairs,aTime))
   if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,nil,aFieldPairs,aTime))
     else Write(GenerateWriteQuery(aMeasurement,nil,aFieldPairs,Now()));
     else Write(GenerateWriteQuery(aMeasurement,nil,aFieldPairs,Now()));
@@ -171,7 +177,6 @@ procedure TInfluxDBData.CreateDataBase;
 var
 var
   resp : IHttpRequestResponse;
   resp : IHttpRequestResponse;
 begin
 begin
-  exit;
   try
   try
     resp := fHTTPClient.Post(Format('%s/query?q=CREATE DATABASE %s',[fURL,fDatabase]),'');
     resp := fHTTPClient.Post(Format('%s/query?q=CREATE DATABASE %s',[fURL,fDatabase]),'');
   except
   except
@@ -182,7 +187,7 @@ begin
     raise EInfluxDBData.Create(Format('[TInfluxDBData] : Response %d : %s trying to create database',[resp.StatusCode,resp.StatusText]));
     raise EInfluxDBData.Create(Format('[TInfluxDBData] : Response %d : %s trying to create database',[resp.StatusCode,resp.StatusText]));
 end;
 end;
 
 
-function TInfluxDBData.GenerateWriteQuery(const aMeasurement : string; aTagPairs : TPairArray; aFieldPairs : TFlexPairArray; aTime : TDateTime): string;
+function TInfluxDBData.GenerateWriteQuery(const aMeasurement : string; aTagPairs : IList<TPair>; aFieldPairs : IList<TFlexPair>; aTime : TDateTime): string;
 var
 var
   incinfo : TStringList;
   incinfo : TStringList;
   tags : string;
   tags : string;
@@ -228,6 +233,7 @@ begin
   if not fInitiated then Init;
   if not fInitiated then Init;
 
 
   stream := TStringStream.Create(aLine);
   stream := TStringStream.Create(aLine);
+  var a := aline;
   try
   try
     try
     try
       resp := fHTTPClient.Post(fFullURL,stream);
       resp := fHTTPClient.Post(fFullURL,stream);