}
sub add_message {
- my ($self, $mime, $bytes, $num) = @_; # mime = Email::MIME object
+ my ($self, $mime, $bytes, $num, $blob) = @_; # mime = Email::MIME object
my $db = $self->{xdb};
my ($doc_id, $old_tid);
});
link_message($self, $smsg, $old_tid);
- $doc->set_data($smsg->to_doc_data);
+ $doc->set_data($smsg->to_doc_data($blob));
if (defined $doc_id) {
$db->replace_document($doc_id, $doc);
} else {
}
sub index_blob {
- my ($self, $git, $mime, $bytes, $num) = @_;
- $self->add_message($mime, $bytes, $num);
+ my ($self, $git, $mime, $bytes, $num, $blob) = @_;
+ $self->add_message($mime, $bytes, $num, $blob);
}
sub unindex_blob {
}
sub index_mm2 {
- my ($self, $git, $mime, $bytes) = @_;
+ my ($self, $git, $mime, $bytes, $blob) = @_;
my $num = $self->{mm}->num_for(mid_clean(mid_mime($mime)));
- index_blob($self, $git, $mime, $bytes, $num);
+ index_blob($self, $git, $mime, $bytes, $num, $blob);
}
sub unindex_mm2 {
}
sub index_both {
- my ($self, $git, $mime, $bytes) = @_;
+ my ($self, $git, $mime, $bytes, $blob) = @_;
my $num = index_mm($self, $git, $mime);
- index_blob($self, $git, $mime, $bytes, $num);
+ index_blob($self, $git, $mime, $bytes, $num, $blob);
}
sub unindex_both {
my $line;
while (defined($line = <$log>)) {
if ($line =~ /$addmsg/o) {
- my $mime = do_cat_mail($git, $1, \$bytes) or next;
- $add_cb->($self, $git, $mime, $bytes);
+ my $blob = $1;
+ my $mime = do_cat_mail($git, $blob, \$bytes) or next;
+ $add_cb->($self, $git, $mime, $bytes, $blob);
} elsif ($line =~ /$delmsg/o) {
- my $mime = do_cat_mail($git, $1) or next;
+ my $blob = $1;
+ my $mime = do_cat_mail($git, $blob) or next;
$del_cb->($self, $git, $mime);
} elsif ($line =~ /^commit ($h40)/o) {
if (defined $max && --$max <= 0) {
my $data = $doc->get_data or return;
my $ts = get_val($doc, &PublicInbox::Search::TS);
utf8::decode($data);
- my ($subj, $from, $refs, $to, $cc) = split(/\n/, $data);
+ my ($subj, $from, $refs, $to, $cc, $blob) = split(/\n/, $data);
bless {
doc => $doc,
subject => $subj,
references => $refs,
to => $to,
cc => $cc,
+ blob => $blob,
}, $class;
}
}
sub to_doc_data {
- my ($self) = @_;
- join("\n", $self->subject, $self->from, $self->references,
- $self->to, $self->cc);
+ my ($self, $blob) = @_;
+ my @rows = ($self->subject, $self->from, $self->references,
+ $self->to, $self->cc);
+ push @rows, $blob if defined $blob;
+ join("\n", @rows);
}
sub references {
sub _extract_mid { mid_clean(mid_mime($_[0]->mime)) }
+sub blob {
+ my ($self, $x40) = @_;
+ if (defined $x40) {
+ $self->{blob} = $x40;
+ } else {
+ $self->{blob};
+ }
+}
+
sub mime {
my ($self, $mime) = @_;
if (defined $mime) {