Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Example

use strict;
use warnings;
use feature 'say';
use Data::Dumper qw(Dumper);

use FalkorDB;
my $db = FalkorDB->new(
    host => 'falkordb',
    port => 6379,
);

my %DISP = (
    add => \&add_person,
    del => \&del_everything,
    list => \&list,
    people => \&add_people,
    all => \&list_all,
);

my $cmd = shift or usage();

main();
exit(0);


sub main {
    my $graph = $db->select_graph('Example');

    if ($DISP{$cmd}) {
        $DISP{$cmd}->($graph);
    } else {
        usage();
    }

}

sub add_people {
    my ($graph) = @_;

    my @people = ("Joe", "Jane", "Mary", "q'ote", 'Other"quote');
    for my $person_name (@people) {
        $graph->query("CREATE (:Person {name: \$name})", { name => $person_name });
    }
}

sub add_person {
    my ($graph) = @_;

    my $res = $graph->query("CREATE (p:Person {name: 'Alice', age: 30}) RETURN p");
    while (my $row = $res->next_row()) {
        for my $node (@$row) {
            my ($name, $age) = ($node->{properties}{name}, $node->{properties}{age});
            print "Added Person: $name ($age)\n";
        }
    }
}

sub del_everything {
    my ($graph) = @_;

    $graph->query("MATCH (n) DETACH DELETE n");
}

sub list {
    my ($graph) = @_;

    # Execute a parameterized read query
    my $res = $graph->query(
        "MATCH (p:Person) WHERE p.age = \$age RETURN p.name, p.age",
        { age => 30 }
    );
    # Iterate over results
    while (my $row = $res->next_row()) {
        my ($name, $age) = @$row;
        print "Found Person: $name ($age)\n";
    }
}

sub list_all {
    my ($graph) = @_;

    my $res = $graph->query(
        "MATCH (p:Person) RETURN p",
    );
    while (my $row = $res->next_row()) {
        for my $node (@$row) {
            print "Found Person: $node->{properties}{name}\n";
        }
    }
}


sub usage {
    my $params = join "|", sort keys %DISP;
    die "Usage: $0 [$params]\n";
}