epic-s6ts
[kivitendo-erp.git] / SL / Auth / ColumnInformation.pm
1 package SL::Auth::ColumnInformation;
2
3 use strict;
4
5 use Carp;
6 use Scalar::Util qw(weaken);
7
8 use SL::DBUtils;
9
10 sub new {
11   my ($class, %params) = @_;
12
13   my $self = bless {}, $class;
14
15   $self->{auth} = $params{auth} || croak "Missing 'auth'";
16   weaken $self->{auth};
17
18   return $self;
19 }
20
21 sub _fetch {
22   my ($self) = @_;
23
24   return $self if $self->{info};
25
26   $self->{info} = {};
27
28   foreach my $table (qw(session session_content)) {
29     my $query = <<SQL;
30       SELECT attname
31       FROM pg_attribute
32       WHERE (attrelid = 'auth.${table}'::regclass)
33         AND (attnum > 0)
34         AND NOT attisdropped
35 SQL
36
37     $self->{info}->{$table} = { selectall_as_map($::form, $self->{auth}->dbconnect, $query, 'attname', [ qw(attname) ]) };
38   }
39
40   return $self;
41 }
42
43 sub info {
44   my ($self) = @_;
45   return $self->_fetch->{info};
46 }
47
48 sub has {
49   my ($self, $column, $table) = @_;
50   return $self->info->{$table || 'session_content'}->{$column};
51 }
52
53 1;