Skip to content

Commit 4601c4c

Browse files
committed
[dataInfluxDB] small refactory
1 parent e5a6a7f commit 4601c4c

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

Quick.Data.InfluxDB.pas

+22-16
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{ ***************************************************************************
22
3-
Copyright (c) 2016-2019 Kike Pérez
3+
Copyright (c) 2016-2020 Kike Pérez
44
55
Unit : Quick.Data.InfluxDB
66
Description : InfluxDB data provider
77
Author : Kike Pérez
88
Version : 1.0
99
Created : 05/04/2019
10-
Modified : 10/04/2019
10+
Modified : 21/04/2020
1111
1212
This file is part of QuickLogger: https://github.com/exilon/QuickLogger
1313
@@ -37,6 +37,7 @@ interface
3737
Classes,
3838
SysUtils,
3939
DateUtils,
40+
Quick.Collections,
4041
Quick.HttpClient,
4142
Quick.Commons,
4243
Quick.Value,
@@ -57,7 +58,7 @@ TInfluxDBData = class(TDataProvider)
5758
fTags : TPairArray;
5859
fCreateDataBaseIfNotExists : Boolean;
5960
procedure CreateDataBase;
60-
function GenerateWriteQuery(const aMeasurement : string; aTagPairs : TPairArray; aFieldPairs : TFlexPairArray; aTime : TDateTime): string;
61+
function GenerateWriteQuery(const aMeasurement : string; aTagPairs : IList<TPair>; aFieldPairs : IList<TFlexPair>; aTime : TDateTime): string;
6162
procedure SetWriteURL;
6263
procedure SetPassword(const Value: string);
6364
procedure SetUserName(const Value: string);
@@ -74,8 +75,9 @@ TInfluxDBData = class(TDataProvider)
7475
property Tags : TPairArray read fTags write fTags;
7576
procedure Init; override;
7677
procedure Restart; override;
77-
procedure Write(const aMeasurement : string; aFieldPairs : TFlexPairArray; aTime : TDateTime = 0); overload;
78-
procedure Write(const aMeasurement : string; aTagPairs : TPairArray; aFieldPairs : TFlexPairArray; aTime : TDateTime = 0); overload;
78+
procedure Stop; override;
79+
procedure Write(const aMeasurement : string; aFieldPairs : IList<TFlexPair>; aTime : TDateTime = 0); overload;
80+
procedure Write(const aMeasurement: string; aTagPairs : IList<TPair>; aFieldPairs: IList<TFlexPair>; aTime: TDateTime); overload;
7981
procedure Write(const aMeasurement: string; const aFieldKey : string; aFieldValue : TFlexValue; aTime: TDateTime); overload;
8082
end;
8183

@@ -97,15 +99,13 @@ constructor TInfluxDBData.Create;
9799

98100
destructor TInfluxDBData.Destroy;
99101
begin
100-
if Assigned(fHTTPClient) then FreeAndNil(fHTTPClient);
101-
102+
if Assigned(fHTTPClient) then fHTTPClient.Free;
102103
inherited;
103104
end;
104105

105106
procedure TInfluxDBData.Init;
106107
begin
107108
if fInitiated then Stop;
108-
109109
SetWriteURL;
110110
fHTTPClient := TJsonHTTPClient.Create;
111111
fHTTPClient.ContentType := 'application/json';
@@ -137,22 +137,28 @@ procedure TInfluxDBData.SetWriteURL;
137137
else fFullURL := Format('%s/write?db=%s&precision=ms',[fURL,fDataBase]);
138138
end;
139139

140+
procedure TInfluxDBData.Stop;
141+
begin
142+
inherited;
143+
if Assigned(fHTTPClient) then FreeAndNil(fHTTPClient);
144+
end;
145+
140146
procedure TInfluxDBData.Write(const aMeasurement: string; const aFieldKey : string; aFieldValue : TFlexValue; aTime: TDateTime);
141147
var
142-
fparray : TFlexPairArray;
148+
fields : IList<TFlexPair>;
143149
begin
144-
fparray.Add(aFieldKey,aFieldValue);
145-
if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,nil,fparray,aTime))
146-
else Write(GenerateWriteQuery(aMeasurement,nil,fparray,Now()));
150+
fields.Add(TFlexPair.Create(aFieldKey,aFieldValue));
151+
if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,nil,fields,aTime))
152+
else Write(GenerateWriteQuery(aMeasurement,nil,fields,Now()));
147153
end;
148154

149-
procedure TInfluxDBData.Write(const aMeasurement: string; aTagPairs : TPairArray; aFieldPairs: TFlexPairArray; aTime: TDateTime);
155+
procedure TInfluxDBData.Write(const aMeasurement: string; aTagPairs : IList<TPair>; aFieldPairs: IList<TFlexPair>; aTime: TDateTime);
150156
begin
151157
if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,aTagPairs,aFieldPairs,aTime))
152158
else Write(GenerateWriteQuery(aMeasurement,aTagPairs,aFieldPairs,Now()));
153159
end;
154160

155-
procedure TInfluxDBData.Write(const aMeasurement: string; aFieldPairs: TFlexPairArray; aTime: TDateTime);
161+
procedure TInfluxDBData.Write(const aMeasurement: string; aFieldPairs: IList<TFlexPair>; aTime: TDateTime);
156162
begin
157163
if atime <> 0 then Write(GenerateWriteQuery(aMeasurement,nil,aFieldPairs,aTime))
158164
else Write(GenerateWriteQuery(aMeasurement,nil,aFieldPairs,Now()));
@@ -171,7 +177,6 @@ procedure TInfluxDBData.CreateDataBase;
171177
var
172178
resp : IHttpRequestResponse;
173179
begin
174-
exit;
175180
try
176181
resp := fHTTPClient.Post(Format('%s/query?q=CREATE DATABASE %s',[fURL,fDatabase]),'');
177182
except
@@ -182,7 +187,7 @@ procedure TInfluxDBData.CreateDataBase;
182187
raise EInfluxDBData.Create(Format('[TInfluxDBData] : Response %d : %s trying to create database',[resp.StatusCode,resp.StatusText]));
183188
end;
184189

185-
function TInfluxDBData.GenerateWriteQuery(const aMeasurement : string; aTagPairs : TPairArray; aFieldPairs : TFlexPairArray; aTime : TDateTime): string;
190+
function TInfluxDBData.GenerateWriteQuery(const aMeasurement : string; aTagPairs : IList<TPair>; aFieldPairs : IList<TFlexPair>; aTime : TDateTime): string;
186191
var
187192
incinfo : TStringList;
188193
tags : string;
@@ -228,6 +233,7 @@ procedure TInfluxDBData.Write(const aLine : string);
228233
if not fInitiated then Init;
229234

230235
stream := TStringStream.Create(aLine);
236+
var a := aline;
231237
try
232238
try
233239
resp := fHTTPClient.Post(fFullURL,stream);

0 commit comments

Comments
 (0)