[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;