ClickHouse
view release on metacpan or search on metacpan
lib/ClickHouse.pm view on Meta::CPAN
package ClickHouse;
use 5.010;
use strict;
use warnings FATAL => 'all';
our $VERSION = '0.05';
use Net::HTTP;
use URI;
use URI::Escape;
use URI::QueryParam;
use Carp;
use Scalar::Util qw/looks_like_number/;
use Try::Tiny;
our $AUTOLOAD;
sub new {
my ($class, %opts) = @_;
my $self = bless {}, $class;
$self->_init(%opts);
return $self;
}
{
my %_attrs = (
'_host' => 'localhost',
'_port' => 8123,
'_database' => 'default',
'_user' => '',
'_password' => '',
'_keep_alive' => 1,
'_format' => 'TabSeparated',
'_socket' => undef,
'_uri' => undef,
'_timeout' => 30,
);
#
# CLASS METHODS
#
# Returns a copy of the instance.
sub _clone {
my ($self) = @_;
my ($clone) = {%$self};
bless( $clone, ref $self );
return ($clone);
}
# Verify that an attribute is valid (called by the AUTOLOAD sub)
sub _accessible {
my ( $self, $name ) = @_;
if ( exists $_attrs{$name} ) {
#$self->verbose("attribute $name is valid");
return 1;
}
else { return 0; }
}
# Initialize the object (only called by the constructor)
sub _init {
my ( $self, %args ) = @_;
foreach my $key ( keys %_attrs ) {
$key =~ s/^_+//;
if ( defined ($args{$key}) && $self->_accessible( "_$key" ) ) {
$self->{"_$key"} = $args{$key};
}
else {
$self->{"_$key"} = $_attrs{"_$key"};
}
}
$self->{'_builder'} = \&_builder;
( run in 0.780 second using v1.01-cache-2.11-cpan-39bf76dae61 )