7 use Data::Dump qw/dump/;
12 my $debug = $ENV{DEBUG} || 0;
21 # Bib-1 @and @and @and @and @and @and @and @or
27 # @attr 1=21 subject-holding
28 # @attr 1=12 control-no
29 # @attr 1=1007 standard-id
48 my $dbname = 'bibliografija';
50 my $dbh = DBI->connect("dbi:Pg:dbname=$dbname", '', '', {AutoCommit => 0});
53 my ( $self, $query ) = @_;
55 die "need query" unless defined $query;
57 my $tsquery = join(' & ', split(/\s+/,$query) );
63 inner join rad_ustanova using (id)
64 left outer join rad_napomena using (id)
65 left outer join rad_projekt using (id)
67 fti_au @@ to_tsquery(?)
68 or fti_pr @@ to_tsquery(?)
73 my $sth = $dbh->prepare( $sql );
75 warn "XXX SQL = ",$sql;
83 # , '%' . $query . '%'
87 my $hits = $sth->rows;
89 warn "# [$tsquery] $hits hits\n";
91 return $self->{hits} = $hits;
96 my ($self,$format) = @_;
100 my $sth = $self->{_sth} || die "no _sth";
102 my $row = $sth->fetchrow_hashref;
104 die "no row" unless $row;
106 my $id = $row->{id} || die "no id";
108 my $marc = MARC::Record->new;
109 $marc->encoding('utf-8');
111 my $leader = $marc->leader;
113 warn "# leader [$leader]";
114 #$leader =~ s/^(....).../$1na$biblevel/;
115 $marc->leader( $leader );
117 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
119 # /srv/webpac2/conf/crosbi/2016-12-12/casopis-dbi2marc.pl
121 my ( $first_author, $authors ) = split(/ ;\s*/,$row->{autori});
123 $marc->add_fields(100,'1',' ','a' => $first_author );
127 my $naslov = $row->{naslov}; # XXX title?
130 $naslov =~ m/^Eine / ? 5 :
131 $naslov =~ m/(Die|Das|Der|Ein|Les|Los|The) / ? 4 :
132 $naslov =~ m/^(Um|Un|An|La|Le|Lo|Il) / ? 3 :
133 $naslov =~ m/^(A|L) / ? 2 :
134 $naslov =~ m/^L'/ ? 2 :
137 $marc->add_fields(245,'1',$i2,
138 'a' => $naslov . ' /',
139 'c' => $row->{autori} . '.',
142 $marc->add_fields(246,'3',' ',
143 'i' => 'Naslov na engleskom:',
147 $marc->add_fields(300,' ',' ',
148 a => join(' ', $row->{stranica_prva}, $row->{stranica_zadnja}),
152 $marc->add_fields(363,' ',' ',
153 a => $row->{volumen},
158 # /data/FF/crosbi/2016-12-12/casopis-rad_napomena.sql
160 $marc->add_fields(500,' ',' ',
161 a => substr($row->{napomena}, 0, 9999), # XXX marc limit for one subfield is 4 digits in dictionary
164 $marc->add_fields(520,' ',' ',
165 a => substr($row->{sazetak}, 0, 9999)
169 $marc->add_fields(999,' ',' ',
175 # diag "# hash ",dump($hash);
176 diag "# marc\n", $marc->as_formatted;
178 $self->save_marc( "$id.marc", $marc->as_usmarc );