Flux query builder for PHP.
Find a file
davidarendsen 5d8f079ead Start documentation
Signed-off-by: davidarendsen <davidarendsen@hey.com>
2022-12-23 13:57:25 +00:00
docs Start documentation 2022-12-23 13:57:25 +00:00
src Extract general QueryBuilder logic into an abstract class to make it more maintainable 2022-12-21 16:02:43 +00:00
tests Extract general QueryBuilder logic into an abstract class to make it more maintainable 2022-12-21 16:02:43 +00:00
.gitignore Add Flux from() and filter() methods 2022-08-05 15:41:38 +00:00
composer.json Add KeyFilter and deprecate KeyValue object 2022-10-21 20:03:52 +00:00
composer.lock Add composer scripts 2022-08-31 08:19:19 +00:00
phpunit.xml Add Flux from() and filter() methods 2022-08-05 15:41:38 +00:00
README.md Start documentation 2022-12-23 13:57:25 +00:00

InfluxDB 2.x Flux Query Builder

With this query builder you can build queries for Flux.

Check our documentation

Installation

composer require arendsen/fluxquerybuilder

Example usage

<?php

use Arendsen\FluxQueryBuilder\QueryBuilder;
use Arendsen\FluxQueryBuilder\Expression\KeyFilter;
use Arendsen\FluxQueryBuilder\Expression\Map;
use Arendsen\FluxQueryBuilder\Expression\Selection;

$queryBuilder = new QueryBuilder();
$queryBuilder->fromBucket('test_bucket')
    ->addRangeStart(new DateTime('3 hours ago'))
    ->fromMeasurement('test_measurement')
    ->addFieldFilter(['username', 'email'])
    ->addKeyFilter(
        KeyFilter::setEqualTo('_field', 'username')
            ->orEqualTo('_field', 'email')
    )
    ->addMap(Map::with('name', 'user'))
    ->addMap(Map::columns([
        'time' => '_time',
        'source' => 'tag',
        'alert' => Selection::if('r._value > 10')->then(true)->else(false),
        'test' => Selection::if('r._value > 10')->then('yes')->else('no'),
    ]))
    ->addGroup(['_field', 'ip']);

echo $queryBuilder->build();

Testing

composer test

Coding style

Run the following commands to check and fix the coding style. We're using the PSR12 standard.

composer check
composer format