Changeset 6


Ignore:
Timestamp:
11/20/10 16:15:39 (14 years ago)
Author:
nanardon
Message:
  • add base updater daemon
Location:
web/trunk
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • web/trunk/lib/Sophie/Base/Result/Deps.pm

    r2 r6  
    66 
    77__PACKAGE__->table('dependencies'); 
    8 __PACKAGE__->add_columns(qw/pkgid deptype count name pkgid/); 
     8__PACKAGE__->add_columns(qw/pkgid deptype count depname pkgid flags evr color/); 
    99__PACKAGE__->set_primary_key(qw/pkgid deptype count/); 
    1010__PACKAGE__->belongs_to(Rpms => 'Sophie::Base::Result::Rpms', 'pkgid'); 
  • web/trunk/lib/Sophie/Base/Result/Paths.pm

    r2 r6  
    66 
    77__PACKAGE__->table('d_path'); 
    8 __PACKAGE__->add_columns(qw/d_path_key path/); 
     8__PACKAGE__->add_columns(qw/d_path_key path added updated/); 
    99__PACKAGE__->set_primary_key('d_path_key'); 
    1010#__PACKAGE__->belongs_to(media => 'Sophie::Base::Result::Medias', 'media'); 
  • web/trunk/lib/Sophie/Base/RpmsPath.pm

    r5 r6  
    5757} 
    5858 
    59 sub update_content { 
     59sub find_delta { 
    6060    my ($self) = @_; 
    6161 
     
    6969        $list{$_} = 1; 
    7070    } 
     71    my @delta; 
    7172 
    7273    foreach my $rpm (sort { $b cmp $a } keys %list) { 
     
    7475            # nothing to do 
    7576        } elsif ($localrpms->{$rpm}) { 
    76             warn "adding $rpm"; 
    77             $self->add_rpm($rpm); 
     77            push(@delta, { rpm => $rpm, delta => 'A' }); 
    7878        } elsif ($baserpms->{$rpm}) { 
    79             my $remove = $self->db->prepare_cached( 
    80                 q{ 
    81                 DELETE FROM rpmfiles where d_path = ? and filename = ? 
    82                 } 
    83             ); 
    84             $remove->execute($$self, $rpm); 
    85             warn "deleting $rpm"; 
     79            push(@delta, { rpm => $rpm, delta => 'R' }); 
    8680        } 
    8781    } 
     82    @delta; 
     83} 
     84sub update_content { 
     85    my ($self, @delta) = @_; 
     86    foreach (@delta) { 
     87        if (!$_->{delta}) { 
     88        } 
     89        elsif ($_->{delta} eq 'A') { 
     90            $self->add_rpm($_->{rpm}); 
     91        } 
     92        elsif ($_->{delta} eq 'R') { 
     93            $self->remove_rpm($_->{rpm}); 
     94        } 
     95    } 
     96} 
    8897 
     98sub remove_rpm { 
     99    my ($self, $rpm) = @_; 
     100    my $remove = $self->db->prepare_cached( 
     101        q{ 
     102        DELETE FROM rpmfiles where d_path = ? and filename = ? 
     103        } 
     104    ); 
     105    $remove->execute($$self, $rpm); 
     106    warn "deleting $rpm"; 
     107    $self->db->commit; 
    89108} 
    90109 
     
    103122    } else { 
    104123    } 
     124    warn "adding $rpm"; 
    105125    $self->db->commit; 
    106126} 
  • web/trunk/lib/Sophie/Controller/Search.pm

    r5 r6  
    2828} 
    2929 
     30sub bytag : XMLRPCPath('/search/rpm/bytag') { 
     31    my ( $self, $c, $searchspec, $tag, $tagvalue ) = @_; 
     32 
     33    @{$c->stash->{xmlrpc}} = $c->model('Base')->resultset('Rpms')->search( 
     34        { 
     35            pkgid => { IN => $c->model('Base')->resultset('Tags') 
     36                ->search({ tagname => $tag, value => $tagvalue}) 
     37                ->get_column('pkgid')->as_query } 
     38        } 
     39    )->get_column('pkgid')->all 
     40 
     41} 
     42 
     43sub bydep : XMLRPCPath('/search/rpm/bydep') { 
     44    my ( $self, $c, $searchspec, $deptype, $depname, $depsense, $depevr ) = @_; 
     45 
     46    @{$c->stash->{xmlrpc}} = $c->model('Base')->resultset('Rpms')->search( 
     47        { 
     48            pkgid => { IN => $c->model('Base')->resultset('Deps') 
     49                ->search({ 
     50                        deptype => $deptype, 
     51                        depname => $depname, 
     52                        ($depsense 
     53                            ? (-nest => \[ 
     54                                'rpmdepmatch(flags, evr, rpmsenseflag(?), ?)', 
     55                                     [ plain_text => $depsense], 
     56                                     [ plain_text => $depevr ] 
     57                                 ]) 
     58                            : () 
     59                        ), 
     60                }) 
     61                ->get_column('pkgid')->as_query } 
     62        } 
     63    )->get_column('pkgid')->all 
     64 
     65} 
    3066 
    3167=head1 AUTHOR 
Note: See TracChangeset for help on using the changeset viewer.