]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Msgmap.pm
search: support alt-ID for mapping legacy serial numbers
[public-inbox.git] / lib / PublicInbox / Msgmap.pm
index 2583ff47422c4e1d7c3d9e36344c453ea891b9b5..3fb3805fe82abea0c23684890d1f33004e6815d5 100644 (file)
@@ -20,7 +20,12 @@ sub new {
                my $err = $!;
                -d $d or die "$d not created: $err";
        }
-       my $f = "$d/msgmap.sqlite3";
+       new_file($class, "$d/msgmap.sqlite3", $writable);
+}
+
+sub new_file {
+       my ($class, $f, $writable) = @_;
+
        my $dbh = DBI->connect("dbi:SQLite:dbname=$f",'','', {
                AutoCommit => 1,
                RaiseError => 1,
@@ -40,6 +45,7 @@ sub new {
        $self;
 }
 
+# n.b. invoked directly by scripts/xhdr-num2mid
 sub meta_accessor {
        my ($self, $key, $value) = @_;
        use constant {
@@ -154,6 +160,7 @@ sub create_tables {
                        'val VARCHAR(255) NOT NULL)');
 }
 
+# used by NNTP.pm
 sub id_batch {
        my ($self, $num, $cb) = @_;
        my $dbh = $self->{dbh};
@@ -167,4 +174,15 @@ sub id_batch {
        $nr;
 }
 
+# only used for mapping external serial numbers (e.g. articles from gmane)
+# see scripts/xhdr-num2mid for usage
+sub mid_set {
+       my ($self, $num, $mid) = @_;
+       my $sth = $self->{mid_set} ||= do {
+               my $sql = 'INSERT INTO msgmap (num, mid) VALUES (?,?)';
+               $self->{dbh}->prepare($sql);
+       };
+       $sth->execute($num, $mid);
+}
+
 1;