Skip to content

Commit 5fbf5a6

Browse files
authored
[Bug] Cast Influxdb point values (alexjustesen#1880)
1 parent 7348f06 commit 5fbf5a6

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

app/Actions/Influxdb/v2/BuildPointData.php

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Actions\Influxdb\v2;
44

55
use App\Helpers\Bitrate;
6+
use App\Helpers\Number;
67
use App\Models\Result;
78
use Illuminate\Support\Arr;
89
use InfluxDB2\Point;
@@ -33,21 +34,21 @@ public function handle(Result $result): Point
3334
->addTag('scheduled', $result->scheduled ? 'true' : 'false');
3435

3536
// Quantitative fields
36-
$point->addField('download', $result->download)
37-
->addField('upload', $result->upload)
38-
->addField('ping', $result->ping)
39-
->addField('download_bits', ! blank($result->download) ? Bitrate::bytesToBits($result->download) : null)
40-
->addField('upload_bits', ! blank($result->upload) ? Bitrate::bytesToBits($result->upload) : null)
41-
->addField('download_jitter', Arr::get($result->data, 'download.latency.jitter'))
42-
->addField('upload_jitter', Arr::get($result->data, 'upload.latency.jitter'))
43-
->addField('ping_jitter', Arr::get($result->data, 'ping.jitter'))
44-
->addField('download_latency_avg', Arr::get($result->data, 'download.latency.iqm'))
45-
->addField('download_latency_high', Arr::get($result->data, 'download.latency.high'))
46-
->addField('download_latency_low', Arr::get($result->data, 'download.latency.low'))
47-
->addField('upload_latency_avg', Arr::get($result->data, 'upload.latency.iqm'))
48-
->addField('upload_latency_high', Arr::get($result->data, 'upload.latency.high'))
49-
->addField('upload_latency_low', Arr::get($result->data, 'upload.latency.low'))
50-
->addField('packet_loss', Arr::get($result->data, 'packetLoss'));
37+
$point->addField('download', Number::castToType($result->download, 'int'))
38+
->addField('upload', Number::castToType($result->upload, 'int'))
39+
->addField('ping', Number::castToType($result->ping, 'float'))
40+
->addField('download_bits', ! blank($result->download) ? Number::castToType(Bitrate::bytesToBits($result->download), 'int') : null)
41+
->addField('upload_bits', ! blank($result->upload) ? Number::castToType(Bitrate::bytesToBits($result->upload), 'int') : null)
42+
->addField('download_jitter', Number::castToType(Arr::get($result->data, 'download.latency.jitter'), 'float'))
43+
->addField('upload_jitter', Number::castToType(Arr::get($result->data, 'upload.latency.jitter'), 'float'))
44+
->addField('ping_jitter', Number::castToType(Arr::get($result->data, 'ping.jitter'), 'float'))
45+
->addField('download_latency_avg', Number::castToType(Arr::get($result->data, 'download.latency.iqm'), 'float'))
46+
->addField('download_latency_high', Number::castToType(Arr::get($result->data, 'download.latency.high'), 'float'))
47+
->addField('download_latency_low', Number::castToType(Arr::get($result->data, 'download.latency.low'), 'float'))
48+
->addField('upload_latency_avg', Number::castToType(Arr::get($result->data, 'upload.latency.iqm'), 'float'))
49+
->addField('upload_latency_high', Number::castToType(Arr::get($result->data, 'upload.latency.high'), 'float'))
50+
->addField('upload_latency_low', Number::castToType(Arr::get($result->data, 'upload.latency.low'), 'float'))
51+
->addField('packet_loss', Number::castToType(Arr::get($result->data, 'packetLoss'), 'float'));
5152

5253
return $point;
5354
}

app/Helpers/Number.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,20 @@
66

77
class Number extends SupportNumber
88
{
9+
/**
10+
* Cast the given value to the type specified.
11+
*/
12+
public static function castToType(mixed $value, string $type): mixed
13+
{
14+
if (is_null($value)) {
15+
return null;
16+
}
17+
18+
settype($value, $type);
19+
20+
return $value;
21+
}
22+
923
/**
1024
* Convert the given number to a specific bit order of magnitude.
1125
*/

0 commit comments

Comments
 (0)