]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/biblio.pm
EETS ALIVE!!!!!!!
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Storage / Publisher / biblio.pm
1 package OpenILS::Application::Storage::Publisher::biblio;
2 use base qw/OpenILS::Application::Storage/;
3 use OpenILS::Application::Storage::CDBI::biblio;
4
5 sub create_record_node {
6         my $self = shift;
7         my $client = shift;
8         my $node = shift;;
9
10         my $n = biblio::record_node->create($node);
11         return $n->id;
12 }
13 __PACKAGE__->register_method(
14         method          => 'create_record_node',
15         api_name        => 'open-ils.storage.biblio.record_node.create',
16         api_level       => 1,
17         argc            => 1,
18 );
19
20 sub update_record_node {
21         my $self = shift;
22         my $client = shift;
23         my $node = shift;;
24
25         my $n = biblio::record_node->retrieve($$node{id});
26         return undef unless ($n);
27
28         for my $field ( keys %$node ) {
29                 $n->$field( $$node{$field} );
30         }
31
32         $n->update;
33         return $n->id;
34 }
35 __PACKAGE__->register_method(
36         method          => 'update_record_node',
37         api_name        => 'open-ils.storage.biblio.record_node.update',
38         api_level       => 1,
39         argc            => 1,
40 );
41
42
43 sub create_record_nodeset {
44         my $self = shift;
45         my $client = shift;
46
47         my $method = $self->method_lookup('open-ils.storage.biblio.record_node.create');
48
49         local biblio::record_node->db_Main->{AutoCommit} = 0;
50
51         my @ids;
52         while ( my $node = shift(@_) ) {
53                 $client->respond( $method->run( $node ) );
54         }
55         return undef;
56 }
57 __PACKAGE__->register_method(
58         method          => 'create_record_nodeset',
59         api_name        => 'open-ils.storage.biblio.record_node.batch.create',
60         api_level       => 1,
61         argc            => 1,
62 );
63
64 sub create_record_entry {
65         my $self = shift;
66         my $client = shift;
67         my $metadata = shift;
68
69         my $rec = biblio::record_entry->create($metadata);
70         return $rec->id;
71 }
72 __PACKAGE__->register_method(
73         method          => 'create_record_entry',
74         api_name        => 'open-ils.storage.biblio.record_entry.create',
75         api_level       => 1,
76         argc            => 2,
77         note            => <<TEXT,
78
79 Params should be passed as a hash ref! 
80 Required fields are:
81
82         creator
83         editor
84
85 Please at least try to fill in:
86
87         tcn_source
88         tcn_value
89         metarecord
90         source
91         active
92
93 TEXT
94
95 );
96
97 sub update_record_entry {
98         my $self = shift;
99         my $client = shift;
100         my $entry = shift;
101
102         my $rec = biblio::record_entry->retrieve($$entry{id});
103         return undef unless ($rec);
104
105         for my $field ( keys %$node ) {
106                 $rec->$field( $$node{$field} );
107         }
108
109         $rec->update;
110         return $rec->id;
111 }
112 __PACKAGE__->register_method(
113         method          => 'update_record_node',
114         api_name        => 'open-ils.storage.biblio.record_node.update',
115         api_level       => 1,
116         argc            => 1,
117 );
118
119
120
121 sub get_record_entry {
122         my $self = shift;
123         my $client = shift;
124         my @ids = @_;
125
126         for my $id ( @ids ) {
127                 next unless ($id);
128                 
129                 my $rec = biblio::record_entry->retrieve($id);
130                 $client->respond( $self->_cdbi2Hash( $rec ) ) if ($rec);
131
132                 last if ($self->api_name !~ /list/o);
133         }
134         return undef;
135 }
136 __PACKAGE__->register_method(
137         method          => 'get_record_entry',
138         api_name        => 'open-ils.storage.biblio.record_entry.retrieve',
139         api_level       => 1,
140         argc            => 1,
141 );
142 __PACKAGE__->register_method(
143         method          => 'get_record_entry',
144         api_name        => 'open-ils.storage.biblio.record_entry.retrieve.list',
145         api_level       => 1,
146         argc            => 1,
147         stream          => 1,
148 );
149
150 sub get_record_node {
151         my $self = shift;
152         my $client = shift;
153         my @ids = @_;
154
155         for my $id ( @ids ) {
156                 next unless ($id);
157                 
158                 my $rec = biblio::record_node->retrieve($id);
159                 $client->respond( $self->_cdbi2Hash( $rec ) ) if ($rec);
160
161                 last if ($self->api_name !~ /list/o);
162         }
163         return undef;
164 }
165 __PACKAGE__->register_method(
166         method          => 'get_record_node',
167         api_name        => 'open-ils.storage.biblio.record_node.retrieve',
168         api_level       => 1,
169         argc            => 1,
170 );
171 __PACKAGE__->register_method(
172         method          => 'get_record_node',
173         api_name        => 'open-ils.storage.biblio.record_node.retrieve.list',
174         api_level       => 1,
175         argc            => 1,
176         stream          => 1,
177 );
178
179 sub get_record_nodeset {
180         my $self = shift;
181         my $client = shift;
182         my @ids = @_;
183
184         for my $id ( @ids ) {
185                 next unless ($id);
186                 
187                 my $rec = biblio::record_entry->retrieve($id);
188                 $client->respond( $self->_cdbi_list2AoH( $rec->nodes ) ) if ($rec);
189         }
190         return undef;
191 }
192 __PACKAGE__->register_method(
193         method          => 'get_record_nodeset',
194         api_name        => 'open-ils.storage.biblio.record_entry.nodeset.retrieve',
195         api_level       => 1,
196         argc            => 1,
197         stream          => 1,
198 );
199
200
201 1;