Cloudflare-API

 view release on metacpan or  search on metacpan

lib/Cloudflare/API/D1.pm  view on Meta::CPAN

#
1;


#============================================================================


sub list_databases {

    my ($self, %query)=@_;
    return $self->collect_list($self->list_databases_page(%query));

}


sub list_databases_page {

    my ($self, %query)=@_;
    return $self->list_pagination($self->api()->account_path('d1', 'database'),
        { mode => 'page' }, \%query);

}


sub list_databases_page_response {

    my ($self, %query)=@_;
    return $self->list_response($self->api()->account_path('d1', 'database'), \%query);

}


sub get_database {

    my ($self, $id, %opt)=@_;
    return $self->api()->request('GET', $self->api()->account_path('d1', 'database', $id),
        %opt);

}


sub create_database {

    my ($self, $body_hr, %opt)=@_;
    die "database body must be a hash reference\n" unless ref($body_hr) eq 'HASH';
    return $self->api()->request('POST', $self->api()->account_path('d1', 'database'),
        json => $body_hr, %opt);

}


sub delete_database {

    my ($self, $id, %opt)=@_;
    return $self->api()->request('DELETE', $self->api()->account_path('d1', 'database', $id),
        %opt);

}


sub update_database {

    my ($self, $id, $body_hr, %opt)=@_;
    die "database body must be a hash reference\n" unless ref($body_hr) eq 'HASH';
    return $self->api()->request('PATCH', $self->api()->account_path('d1', 'database', $id),
        json => $body_hr, %opt);

}


sub query_database {


    #  Pass SQL and its parameters in the caller's supplied request body
    #
    my ($self, $id, $body_hr, %opt)=@_;
    die "query body must be a hash reference\n" unless ref($body_hr) eq 'HASH';
    return $self->api()->request('POST', $self->api()->account_path('d1', 'database', $id, 'query'),
        json => $body_hr, %opt);

}


sub query_sql {


    #  Keep bound values separate from SQL text
    #
    my ($self, $id, $sql, @arg)=@_;
    my $params_ar=@arg % 2 ? shift(@arg) : undef;
    my %opt=@arg;
    die "sql must be a non-empty scalar\n" unless defined($sql)&&!ref($sql)&&length($sql);
    die "params must be an array reference\n"
        if defined($params_ar)&&ref($params_ar) ne 'ARRAY';
    my %body=(sql => $sql);
    $body{'params'}=$params_ar if defined($params_ar);
    return $self->query_database($id, \%body, %opt);

}
__END__

=encoding utf8

=begin markdown

# Cloudflare::API::D1 #

# NAME #

Cloudflare::API::D1 - manage D1 databases and run REST SQL queries

# SYNOPSIS #

```perl
my $d1=$api->d1();
my $databases=$d1->list_databases();
my $rows=$d1->query_sql($database_id,
    'SELECT * FROM items WHERE id = ?', [$item_id]);
```

# DESCRIPTION #



( run in 1.072 second using v1.01-cache-2.11-cpan-145b269f2f3 )