Merge branch 'master' of lx-office.linet-services.de:lx-office-erp
[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   my $query = <<SQL;
27     SELECT a.attname, format_type(a.atttypid, a.atttypmod) AS format_type, d.adsrc, a.attnotnull
28     FROM pg_attribute a
29     LEFT JOIN pg_attrdef d ON (a.attrelid = d.adrelid) AND (a.attnum = d.adnum)
30     WHERE (a.attrelid = 'auth.session_content'::regclass)
31       AND (a.attnum > 0)
32       AND NOT a.attisdropped
33     ORDER BY a.attnum
34 SQL
35
36   $self->{info} = { selectall_as_map($::form, $self->{auth}->dbconnect, $query, 'attname', [ qw(format_type adsrc attnotnull) ]) };
37
38   return $self;
39 }
40
41 sub info {
42   my ($self) = @_;
43   return $self->_fetch->{info};
44 }
45
46 sub has {
47   my ($self, $column) = @_;
48   return $self->info->{$column};
49 }
50
51 1;