CPAN-Search-Lite
view release on metacpan or search on metacpan
lib/CPAN/Search/Lite/Populate.pm view on Meta::CPAN
my ($class, %args) = @_;
my $info = $args{info};
die "No author info available" unless has_data($info);
my $cdbi = $args{cdbi};
die "No dbi object available"
unless ($cdbi and ref($cdbi) eq 'CPAN::Search::Lite::DBI::Index::auths');
my $self = {
info => $info,
insert => {},
update => {},
delete => {},
ids => {},
obj => {},
cdbi => $cdbi,
error_msg => '',
info_msg => '',
};
bless $self, $class;
}
sub insert {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $info = $self->{info};
my $cdbi = $self->{cdbi};
my $data = $setup ? $info : $self->{insert};
unless (has_data($data)) {
$self->{info_msg} = q{No author data to insert};
return;
}
my $auth_ids = $self->{ids};
my @fields = qw(cpanid email fullname);
my $sth = $cdbi->sth_insert(\@fields) or do {
$self->{error_msg} = $cdbi->{error_msg};
return;
};
foreach my $cpanid (keys %$data) {
my $values = $info->{$cpanid};
next unless ($values and $cpanid);
print "Inserting author $cpanid\n";
$sth->execute($cpanid, $values->{email}, $values->{fullname})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$auth_ids->{$cpanid} = $sth->{mysql_insertid};
}
$dbh->commit or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
return 1;
}
sub update {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $data = $self->{update};
my $cdbi = $self->{cdbi};
unless (has_data($data)) {
$self->{info_msg} = q{No author data to update};
return;
}
my $info = $self->{info};
my @fields = qw(cpanid email fullname);
foreach my $cpanid (keys %$data) {
print "Updating author $cpanid\n";
next unless $data->{$cpanid};
my $sth = $cdbi->sth_update(\@fields, $data->{$cpanid});
my $values = $info->{$cpanid};
next unless ($cpanid and $values);
$sth->execute($cpanid, $values->{email}, $values->{fullname})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
}
$dbh->commit or do {
$cdbi->db_error();
$self->{error_msg} = $cdbi->{error_msg};
return;
};
return 1;
}
sub delete {
my $self = shift;
$self->{info_msg} = q{No author data to delete};
return;
}
package CPAN::Search::Lite::Populate::dists;
use base qw(CPAN::Search::Lite::Populate);
use CPAN::Search::Lite::Util qw(has_data);
sub new {
my ($class, %args) = @_;
my $info = $args{info};
die "No dist info available" unless has_data($info);
my $cdbi = $args{cdbi};
die "No dbi object available"
unless ($cdbi and ref($cdbi) eq 'CPAN::Search::Lite::DBI::Index::dists');
my $self = {
info => $info,
insert => {},
update => {},
delete => {},
ids => {},
lib/CPAN/Search/Lite/Populate.pm view on Meta::CPAN
error_msg => '',
info_msg => '',
};
bless $self, $class;
}
sub insert {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
return unless my $auth_obj = $self->{obj}->{auths};
my $cdbi = $self->{cdbi};
my $auth_ids = $auth_obj->{ids};
my $dists = $self->{info};
my $data = $setup ? $dists : $self->{insert};
unless (has_data($data)) {
$self->{info_msg} = q{No dist data to insert};
return;
}
unless ($dists and $auth_ids) {
$self->{error_msg}->{index} = q{No dist index data available};
return;
}
my $dist_ids = $self->{ids};
my @fields = qw(auth_id dist_name dist_file dist_vers
dist_abs size birth readme changes meta install md5);
my $sth = $cdbi->sth_insert(\@fields) or do {
$self->{error_msg} = $cdbi->{error_msg};
return;
};
foreach my $distname (keys %$data) {
my $values = $dists->{$distname};
my $cpanid = $values->{cpanid};
next unless ($values and $cpanid and $auth_ids->{$cpanid});
print "Inserting $distname of $cpanid\n";
$sth->execute($auth_ids->{$cpanid}, $distname,
$values->{filename}, $values->{version},
$values->{description}, $values->{size},
$values->{date}, $values->{readme},
$values->{changes}, $values->{meta},
$values->{install}, $values->{md5})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$dist_ids->{$distname} = $sth->{mysql_insertid};
}
$dbh->commit or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
return 1;
}
sub update {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $cdbi = $self->{cdbi};
my $data = $self->{update};
unless (has_data($data)) {
$self->{info_msg} = q{No dist data to update};
return;
}
return unless my $auth_obj = $self->{obj}->{auths};
my $auth_ids = $auth_obj->{ids};
my $dists = $self->{info};
unless ($dists and $auth_ids) {
$self->{error_msg} = q{No dist index data available};
return;
}
my @fields = qw(auth_id dist_name dist_file dist_vers
dist_abs size birth readme changes meta install md5);
foreach my $distname (keys %$data) {
next unless $data->{$distname};
my $sth = $cdbi->sth_update(\@fields, $data->{$distname});
my $values = $dists->{$distname};
my $cpanid = $values->{cpanid};
next unless ($values and $cpanid and $auth_ids->{$cpanid});
print "Updating $distname of $cpanid\n";
$sth->execute($auth_ids->{$values->{cpanid}}, $distname,
$values->{filename}, $values->{version},
$values->{description}, $values->{size},
$values->{date}, $values->{readme},
$values->{changes}, $values->{meta},
$values->{install}, $values->{md5})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
}
$dbh->commit or do {
$cdbi->db_error();
$self->{error_msg} = $cdbi->{error_msg};
return;
};
return 1;
}
sub delete {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $cdbi = $self->{cdbi};
my $data = $self->{delete};
unless (has_data($data)) {
$self->{info_msg} = q{No dist data to delete};
return;
lib/CPAN/Search/Lite/Populate.pm view on Meta::CPAN
delete => {},
ids => {},
obj => {},
cdbi => $cdbi,
error_msg => '',
info_msg => '',
};
bless $self, $class;
}
sub insert {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
return unless my $dist_obj = $self->{obj}->{dists};
my $cdbi = $self->{cdbi};
my $dist_ids = $dist_obj->{ids};
my $mods = $self->{info};
my $data = $setup ? $mods : $self->{insert};
unless (has_data($data)) {
$self->{info_msg} = q{No module data to insert};
return;
}
unless ($mods and $dist_ids) {
$self->{error_msg} = q{No module index data available};
return;
}
my $mod_ids = $self->{ids};
my @fields = qw(dist_id mod_name mod_abs doc src
mod_vers dslip chapterid);
my $sth = $cdbi->sth_insert(\@fields) or do {
$self->{error_msg} = $cdbi->{error_msg};
return;
};
foreach my $modname(keys %$data) {
my $values = $mods->{$modname};
next unless ($values and $dist_ids->{$values->{dist}});
$sth->execute($dist_ids->{$values->{dist}}, $modname,
$values->{description}, $values->{doc},
$values->{src}, $values->{version},
$values->{dslip}, $values->{chapterid})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$mod_ids->{$modname} = $sth->{mysql_insertid};
}
$dbh->commit or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
return 1;
}
sub update {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $cdbi = $self->{cdbi};
my $data = $self->{update};
unless (has_data($data)) {
$self->{info_msg} = q{No module data to update};
return;
}
return unless my $dist_obj = $self->{obj}->{dists};
my $dist_ids = $dist_obj->{ids};
my $mods = $self->{info};
unless ($dist_ids and $mods) {
$self->{error_msg} = q{No module index data available};
return;
}
my @fields = qw(dist_id mod_name mod_abs doc src
mod_vers dslip chapterid);
foreach my $modname (keys %$data) {
next unless $data->{$modname};
print "Updating $modname\n";
my $sth = $cdbi->sth_update(\@fields, $data->{$modname});
my $values = $mods->{$modname};
next unless ($values and $dist_ids->{$values->{dist}});
$sth->execute($dist_ids->{$values->{dist}}, $modname,
$values->{description}, $values->{doc},
$values->{src}, $values->{version},
$values->{dslip}, $values->{chapterid})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
}
$dbh->commit or do {
$cdbi->db_error();
$self->{error_msg} = $cdbi->{error_msg};
return;
};
return 1;
}
sub delete {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
return unless my $dist_obj = $self->{obj}->{dists};
my $cdbi = $self->{cdbi};
my $data = $dist_obj->{delete};
if (has_data($data)) {
my $sth = $cdbi->sth_delete('dist_id');
foreach my $distname(keys %$data) {
$sth->execute($data->{$distname}) or do {
$cdbi->db_error($sth);
lib/CPAN/Search/Lite/Populate.pm view on Meta::CPAN
unless ($cdbi and ref($cdbi) eq 'CPAN::Search::Lite::DBI::Index::chaps');
my $self = {
obj => {},
cdbi => $cdbi,
error_msg => '',
info_msg => '',
};
bless $self, $class;
}
sub insert {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
return unless my $dist_obj = $self->{obj}->{dists};
my $cdbi = $self->{cdbi};
my $dist_insert = $dist_obj->{insert};
my $dists = $dist_obj->{info};
my $dist_ids = $dist_obj->{ids};
my $data = $setup ? $dists : $dist_insert;
unless (has_data($data)) {
$self->{info_msg} = q{No chap data to insert};
return;
}
unless ($dists and $dist_ids) {
$self->{error_msg} = q{No chap index data available};
return;
}
my @fields = qw(chapterid dist_id subchapter);
my $sth = $cdbi->sth_insert(\@fields) or do {
$self->{error_msg} = $cdbi->{error_msg};
return;
};
foreach my $dist (keys %$data) {
my $values = $dists->{$dist};
next unless defined $values->{chapterid};
foreach my $chap_id(keys %{$values->{chapterid}}) {
foreach my $sub_chap(keys %{$values->{chapterid}->{$chap_id}}) {
next unless $dist_ids->{$dist};
$sth->execute($chap_id, $dist_ids->{$dist}, $sub_chap)
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
}
}
$dbh->commit or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
return 1;
}
sub update {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $cdbi = $self->{cdbi};
return unless my $dist_obj = $self->{obj}->{dists};
my $dists = $dist_obj->{info};
my $dist_ids = $dist_obj->{ids};
my $data = $dist_obj->{update};
unless (has_data($data)) {
$self->{info_msg} = q{No chap data to update};
return;
}
unless ($dist_ids and $dists) {
$self->{error_msg} = q{No chap index data available};
return;
}
my $sth = $cdbi->sth_delete('dist_id');
foreach my $distname(keys %$data) {
next unless $data->{$distname};
$sth->execute($data->{$distname}) or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
$sth->finish();
my @fields = qw(chapterid dist_id subchapter);
$sth = $cdbi->sth_insert(\@fields);
foreach my $dist (keys %$data) {
my $values = $dists->{$dist};
next unless defined $values->{chapterid};
foreach my $chap_id(keys %{$values->{chapterid}}) {
foreach my $sub_chap(keys %{$values->{chapterid}->{$chap_id}}) {
next unless $dist_ids->{$dist};
$sth->execute($chap_id, $dist_ids->{$dist}, $sub_chap)
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
}
}
$dbh->commit or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
return 1;
}
sub delete {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
lib/CPAN/Search/Lite/Populate.pm view on Meta::CPAN
return;
}
return unless my $dist_obj = $self->{obj}->{dists};
return unless my $mod_obj = $self->{obj}->{mods};
my $cdbi = $self->{cdbi};
my $dist_insert = $dist_obj->{insert};
my $dists = $dist_obj->{info};
my $dist_ids = $dist_obj->{ids};
my $mod_ids = $mod_obj->{ids};
my $data = $setup ? $dists : $dist_insert;
unless (has_data($data)) {
$self->{info_msg} = q{No req data to insert};
return;
}
unless ($dist_ids and $mod_ids and $dists) {
$self->{error_msg} = q{No req index data available};
return;
}
my @fields = qw(dist_id mod_id req_vers);
my $sth = $cdbi->sth_insert(\@fields) or do {
$self->{error_msg} = $cdbi->{error_msg};
return;
};
foreach my $dist (keys %$data) {
my $values = $dists->{$dist};
my $requires = $values->{requires};
next unless (defined $requires);
if ( ref($requires) eq 'HASH') {
foreach my $module (keys %{$requires}) {
next unless ($dist_ids->{$dist} and $mod_ids->{$module});
$sth->execute($dist_ids->{$dist}, $mod_ids->{$module},
$requires->{$module})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
}
else {
my $module = $requires;
next unless ($dist_ids->{$dist} and $mod_ids->{$module});
$sth->execute($dist_ids->{$dist}, $mod_ids->{$module}, 0)
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
}
$dbh->commit or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
return 1;
}
sub update {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $cdbi = $self->{cdbi};
return unless my $dist_obj = $self->{obj}->{dists};
return unless my $mod_obj = $self->{obj}->{mods};
my $dists = $dist_obj->{info};
my $dist_ids = $dist_obj->{ids};
my $mod_ids = $mod_obj->{ids};
my $data = $dist_obj->{update};
unless (has_data($data)) {
$self->{info_msg} = q{No req data to update};
return;
}
unless ($dist_ids and $mod_ids and $dists) {
$self->{error_msg} = q{No author index data available};
return;
}
my $sth = $cdbi->sth_delete('dist_id');
foreach my $distname(keys %$data) {
next unless $data->{$distname};
$sth->execute($data->{$distname}) or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
$sth->finish();
my @fields = qw(dist_id mod_id req_vers);
$sth = $cdbi->sth_insert(\@fields);
foreach my $dist (keys %$data) {
my $values = $dists->{$dist};
my $requires = $values->{requires};
next unless defined $requires;
if (ref($requires) eq 'HASH') {
foreach my $module (keys %{$requires}) {
next unless ($dist_ids->{$dist} and $mod_ids->{$module});
$sth->execute($dist_ids->{$dist}, $mod_ids->{$module},
$requires->{$module})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
}
else {
my $module = $requires;
next unless ($dist_ids->{$dist} and $mod_ids->{$module});
$sth->execute($dist_ids->{$dist}, $mod_ids->{$module}, 0)
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
lib/CPAN/Search/Lite/Populate.pm view on Meta::CPAN
obj => {},
cdbi => $cdbi,
error_msg => '',
info_msg => '',
};
bless $self, $class;
}
sub insert {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
return unless my $dist_obj = $self->{obj}->{dists};
my $cdbi = $self->{cdbi};
my $dist_ids = $dist_obj->{ids};
my $ppms = $self->{info};
my $data = $setup ? $ppms : $self->{insert};
unless (has_data($data)) {
$self->{info_msg} = q{No ppm data to insert};
return;
}
unless ($ppms and $dist_ids) {
$self->{error_msg} = q{No ppm index data available};
return;
}
my @fields = qw(dist_id rep_id ppm_vers);
my $sth = $cdbi->sth_insert(\@fields) or do {
$self->{error_msg} = $cdbi->{error_msg};
return;
};
foreach my $rep_id (keys %$data) {
my $values = $data->{$rep_id};
unless (has_data($values)) {
print "No data to insert for rep_id=$rep_id\n";
next;
}
foreach my $package (keys %{$values}) {
print "Inserting $package for rep_id=$rep_id\n";
$sth->execute($dist_ids->{$package},
$rep_id,
$values->{$package}->{version})
or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
}
}
$dbh->commit or do {
$cdbi->db_error($sth);
$self->{error_msg} = $cdbi->{error_msg};
return;
};
$sth->finish();
return 1;
}
sub update {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $cdbi = $self->{cdbi};
my $data = $self->{update};
unless (has_data($data)) {
$self->{info_msg} = q{No ppm data to update};
return;
}
foreach my $rep_id (keys %$data) {
my $values = $data->{$rep_id};
unless (has_data($values)) {
print "No data to update for rep_id=$rep_id\n";
next;
}
foreach my $package (keys %{$values}) {
print "Updating $package for rep_id=$rep_id\n";
my $dist_id = $values->{$package}->{dist_id};
my $ppm_vers = $values->{$package}->{ppm_vers};
next unless ($dist_id and $rep_id);
my $sql = q{UPDATE LOW_PRIORITY } .
q{ ppms SET ppm_vers = ? } .
qq{ WHERE dist_id = $dist_id } .
qq { AND rep_id = $rep_id };
my $sth = $dbh->prepare($sql) or do {
$self->db_error();
return;
};
$sth->execute($ppm_vers) or do {
$self->db_error($sth);
return;
};
$sth->finish;
}
}
$dbh->commit or do {
$self->db_error();
return;
};
return 1;
}
sub delete {
my $self = shift;
unless ($dbh) {
$self->{error_msg} = q{No db handle available};
return;
}
my $cdbi = $self->{cdbi};
my $data = $self->{delete};
unless (has_data($data)) {
$self->{info_msg} = q{No ppm data to delete};
return;
}
foreach my $rep_id (keys %$data) {
next unless $rep_id;
my $values = $data->{$rep_id};
unless (has_data($values)) {
( run in 0.474 second using v1.01-cache-2.11-cpan-5a3173703d6 )