Apache2-Translation

 view release on metacpan or  search on metacpan

lib/Apache2/Translation/Admin.pm  view on Meta::CPAN

    eval {
      $prov->begin;

      my ($oblock, $block, $oorder, $order, $id, $action, $note);
      foreach my $a ($r->param) {
	if( ($oblock, $block, $oorder, $order, $id)=
	    $a=~/^action_(\d*)_(\d+)_(\d*)_(\d+)_(\d*)/ ) {
	  $action=$r->param($a);
	  $note=$r->param("note_${block}_${order}");
	  if( length $id ) {
	    die "ERROR: Key=$okey, Uri=$ouri, Block=$oblock, Order=$oorder, Id=$id not updated\n"
	      unless( 0<$prov->update( [$okey, $ouri, $oblock, $oorder, $id],
				       [$key, $uri, $block, $order, $action, $note] ) );
	  } else {
	    die "ERROR: Key=$key, Uri=$uri, Block=$block, Order=$order not inserted\n"
	      unless( 0<$prov->insert( [$key, $uri, $block, $order, $action, $note] ) );
	  }
	} elsif( ($oblock, $oorder, $id)=
		 $a=~/^delete_(\d*)_(\d+)_(\d*)/ ) {
	  die "ERROR: Key=$okey, Uri=$ouri, Block=$oblock, Order=$oorder, Id=$id not deleted\n"
	    unless( 0<$prov->delete( [$okey, $ouri, $oblock, $oorder, $id] ) );

t/003provider-BDB.t  view on Meta::CPAN


cmp_deeply [$ro->fetch('k1', 'u1', 1)],
           [[0, 0, 'a', 1, 'note1'],
	    [0, 1, 'b', 2, undef],
	    [1, 0, 'inserted_action', 7, 'inserted_note'],
	    [1, 1, 'c', 3, 'note2']],
           n 'fetch k1 u1 after insert';

$o->begin;
$o->update([qw/k1 u1 1 0 7/],
	   [qw/k1 u1 1 3/, "updated\naction", "updated\nnote"]);
$o->commit;

cmp_deeply [$ro->fetch('k1', 'u1', 1)],
           [[0, 0, 'a', 1, 'note1'],
	    [0, 1, 'b', 2, undef],
	    [1, 1, 'c', 3, 'note2'],
	    [1, 3, "updated\naction", 7, "updated\nnote"]],
           n 'fetch k1 u1 after update';

$o->begin;
$o->delete([qw/k1 u1 1 1 3/]);
$o->commit;

cmp_deeply [$ro->fetch('k1', 'u1', 1)],
           [[0, 0, 'a', 1, 'note1'],
	    [0, 1, 'b', 2, undef],
	    [1, 3, "updated\naction", 7, "updated\nnote"]],
           n 'fetch k1 u1 after delete';

#$o->dump("%{KEY} / %{URI}\t%{BLOCK}/%{ORDER} %{ID}\n%{pa>> ;ACTION}\n%{pn>> ;NOTE}\n\n");

my @l=([qw/k1 u1 0 0 a note1 1/],
       [qw/k1 u1 0 1 b/, undef, 2],
       [qw/k1 u1 1 3/, "updated\naction", "updated\nnote", 7],
       [qw/k1 u2 0 0 d note3 4/],
       [qw/k1 u2 1 0 e note4 5/],
       [qw/k1 u2 1 1 f/, undef, 6]);
my $i=0;
for( my $iterator=$o->iterator; my $el=$iterator->(); $i++ ) {
  cmp_deeply($el, $l[$i], n "iterator $i");
}
cmp_deeply( $i, 6, n 'iteratorloop count' );

$o->begin;

t/005provider-MMapDB.t  view on Meta::CPAN

cmp_deeply [$ro->fetch('k1', 'u1', 1)],
           [[0, 0, 'a', re(qr/^\d+$/), 'note1'],
	    [0, 1, 'b', re(qr/^\d+$/), undef],
	    [1, 0, 'inserted_action', re(qr/^\d+$/), 'inserted_note'],
	    [1, 1, 'c', re(qr/^\d+$/), 'note2']],
           n 'fetch k1 u1 after insert';

$o->begin;
$o->update([qw/k1 u1 1 0/, $o->_db->main_index->{trans}->{db}
                             ->{actn}->{k1}->{u1}->[2]->[3]],
	   [qw/k1 u1 1 3/, "updated\naction", "updated\nnote"]);
$o->commit;

SKIP: {
  eval 'use JSON::XS; use Algorithm::Diff';
  $@ and skip 'JSON::XS or Algorithm::Diff not installed', 4;

  cmp_deeply [$ro->diff($o)],
             [
              [["-", 2,
                ["k1", "u1", 1, 0, "inserted_action", "inserted_note"]]],
              [["+", 3,
                ["k1", "u1", 1, 3, "updated\naction", "updated\nnote"]]],
             ],
             n 'diff after update';

  cmp_deeply [$ro->diff($o, qw/key k1 uri u1/)],
             [
              [["-", 2,
                ["k1", "u1", 1, 0, "inserted_action", "inserted_note"]]],
              [["+", 3,
                ["k1", "u1", 1, 3, "updated\naction", "updated\nnote"]]],
             ],
             n 'diff2 after update';

  cmp_deeply [$ro->diff($o, qw/key k1 uri u2/)],
             [],
             n 'diff3 after update';

  cmp_deeply [$ro->diff($o, qw/key hugo uri erna/)],
             [],
             n 'diff4 after update';
}

$ro->start;
cmp_deeply [$ro->fetch('k1', 'u1', 1)],
           [[0, 0, 'a', re(qr/^\d+$/), 'note1'],
	    [0, 1, 'b', re(qr/^\d+$/), undef],
	    [1, 1, 'c', re(qr/^\d+$/), 'note2'],
	    [1, 3, "updated\naction", re(qr/^\d+$/), "updated\nnote"]],
           n 'fetch k1 u1 after update';

$o->begin;
$o->delete([qw/k1 u1 1 1/, $o->_db->main_index->{trans}->{db}
                             ->{actn}->{k1}->{u1}->[2]->[3]]);
$o->commit;

$ro->start;
cmp_deeply [$ro->fetch('k1', 'u1', 1)],
           [[0, 0, 'a', re(qr/^\d+$/), 'note1'],
	    [0, 1, 'b', re(qr/^\d+$/), undef],
	    [1, 3, "updated\naction", re(qr/^\d+$/), "updated\nnote"]],
           n 'fetch k1 u1 after delete';

#$o->dump("%{KEY} / %{URI}\t%{BLOCK}/%{ORDER} %{ID}\n%{pa>> ;ACTION}\n%{pn>> ;NOTE}\n\n");

my @l=([qw/k1 u1 0 0 a note1/, re(qr/^\d+$/)],
       [qw/k1 u1 0 1 b/, undef, re(qr/^\d+$/)],
       [qw/k1 u1 1 3/, "updated\naction", "updated\nnote", re(qr/^\d+$/)],
       [qw/k1 u2 0 0 d note3/, re(qr/^\d+$/)],
       [qw/k1 u2 1 0 e note4/, re(qr/^\d+$/)],
       [qw/k1 u2 1 1 f/, undef, re(qr/^\d+$/)]);
my $i=0;
for( my $iterator=$o->iterator; my $el=$iterator->(); $i++ ) {
  cmp_deeply($el, $l[$i], n "iterator $i");
}
cmp_deeply( $i, 6, n 'iteratorloop count' );

$o->begin;



( run in 0.284 second using v1.01-cache-2.11-cpan-05444aca049 )