]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/actor.pm
tons of storage server changes... see diffs
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Storage / Publisher / actor.pm
1 package OpenILS::Application::Storage::Publisher::actor;
2 use base qw/OpenILS::Application::Storage/;
3 use OpenILS::Application::Storage::CDBI::actor;
4 use OpenSRF::Utils::Logger qw/:level/;
5 use OpenILS::Utils::Fieldmapper;
6
7 my $log = 'OpenSRF::Utils::Logger';
8
9 sub org_unit_list {
10         my $self = shift;
11         my $client = shift;
12
13         my $select =<<" SQL";
14         SELECT  *
15           FROM  actor.org_unit
16           ORDER BY CASE WHEN parent_ou IS NULL THEN 0 ELSE 1 END, name;
17         SQL
18
19         my $sth = actor::org_unit->db_Main->prepare_cached($select);
20         $sth->execute;
21
22         my @fms;
23         push @fms, $_->to_fieldmapper for ( map { actor::org_unit->construct($_) } $sth->fetchall_hash );
24
25         return \@fms;
26 }
27 __PACKAGE__->register_method(
28         api_name        => 'open-ils.storage.direct.actor.org_unit_list',
29         api_level       => 1,
30         method          => 'org_unit_list',
31 );
32
33 sub org_unit_descendants {
34         my $self = shift;
35         my $client = shift;
36         my $id = shift;
37
38         return undef unless ($id);
39
40         my $select =<<" SQL";
41         SELECT  a.*
42           FROM  connectby('actor.org_unit','id','parent_ou','name',?,'100','.')
43                         as t(keyid text, parent_keyid text, level int, branch text,pos int),
44                 actor.org_unit a
45           WHERE t.keyid = a.id
46           ORDER BY t.pos;
47         SQL
48
49         my $sth = actor::org_unit->db_Main->prepare_cached($select);
50         $sth->execute($id);
51
52         my @fms;
53         push @fms, $_->to_fieldmapper for ( map { actor::org_unit->construct($_) } $sth->fetchall_hash );
54
55         return \@fms;
56 }
57 __PACKAGE__->register_method(
58         api_name        => 'open-ils.storage.direct.actor.org_unit_descendants',
59         api_level       => 1,
60         method          => 'org_unit_descendants',
61 );
62
63
64 1;