[interchange-cvs] interchange - racke modified code/UI_Tag/import_fields.coretag
interchange-core@interchange.redhat.com
interchange-core@interchange.redhat.com
Fri May 24 16:59:00 2002
User: racke
Date: 2002-05-24 20:58:55 GMT
Modified: code/UI_Tag import_fields.coretag
Log:
added option to replace items in the database
Revision Changes Path
1.2 +17 -1 interchange/code/UI_Tag/import_fields.coretag
rev 1.2, prev_rev 1.1
Index: import_fields.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/UI_Tag/import_fields.coretag,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- import_fields.coretag 29 Jan 2002 05:52:40 -0000 1.1
+++ import_fields.coretag 24 May 2002 20:58:55 -0000 1.2
@@ -193,7 +193,7 @@
my $k;
my @f;
@names = split /\s+/, $fields;
- shift @names;
+ my $key = shift @names;
my @set;
my $i = 0;
my $idx = 0;
@@ -201,6 +201,12 @@
$db->column_index($_);
$set[$idx++] = $db->field_settor($_);
}
+ my %keys;
+ if ($opt->{cleanse}) {
+ # record existing columns
+ my $recs = $db->query("select $key from $table");
+ $keys{$_->[0]} = 1 for @$recs;
+ }
my $count = 0;
my $totcount = 0;
my $delcount = 0;
@@ -246,8 +252,18 @@
}
for ($i = 0; $i < $idx; $i++) {
$set[$i]->($k, $f[$i]);
+ if ($opt->{cleanse}) {
+ delete $keys{$k};
+ }
}
$count++;
+ }
+ if ($opt->{cleanse}) {
+ # remove any record which hasn't updated
+ for (keys(%keys)) {
+ $db->delete_record($_);
+ $delcount++;
+ }
}
$out .= "${tmsg}$count records processed of $totcount input lines.\n";
$out .= "${tmsg}$delcount records deleted.\n" if $delcount;