#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;
use NGCP::Schema;
use NGCP::Panel::Utils::Preferences;
use NGCP::Panel::Utils::Generic qw(:all);
use Safe::Isa qw($_isa);

my $logger = Log::Log4perl->get_logger('NGCP::Panel');
my $schema = NGCP::Schema->connect();
my $dbh = $schema->storage->dbh;
use Test::MockObject;
my $c_mock = Test::MockObject->new();
my $user_mock = Test::MockObject->new();
$user_mock->set_always( 'roles' => 'admin' );
$c_mock->set_always( 'log' => $logger )->set_always( 'model' => $schema )->set_always( 'user' => $user_mock );



my $cnt = 1000;
my $devmod_id = 1;


my $time = time;
for(my $i=0; $i<$cnt; $i++){
    my $dev_pref_rs = NGCP::Panel::Utils::Preferences::get_preferences_rs(
        c => $c_mock,
        type => 'dev',
        id =>  $devmod_id,
    );
    my $pref_values = get_inflated_columns_all($dev_pref_rs,'hash' => 'attribute', 'column' => 'value', 'force_array' => 1);
}
print "pure.time=".(time-$time).";\n";

my $time = time;
for(my $i=0; $i<$cnt; $i++){
    my $devprof_pref_rs = $c_mock->model('DB')
        ->resultset('voip_preferences')
        ->search({
            'profile.id' => $devmod_id,
        },{
            prefetch => {'voip_devprof_preferences' => 'profile'},
    });
    my %pref_values;
    foreach my $value($devprof_pref_rs->all) {
        $pref_values{$value->attribute} =
            [ map {$_->value} $value->voip_devprof_preferences->all ];
    }
}
print "DBIx.time=".(time-$time).";\n";

#pure.time=5;
#DBIx.time=14;
r
1;