package @NAME@::SQL::SampleTable;
use base 'SQL::ProtoTable';
sub db_table
{
return 'sample';
}
sub available_filters {
my @available_filters = qw(
_class_filter
_status_filter
_in_id_filter
_id_filter
_class_excludes_filter
_excludes_filter
);
return \@available_filters;
}
# ----------------------------------------------------------------------------
# �������� ������ � ��������, ������ ��� ������� �����!
# ��� ����� �������� - ���������� ��� ���� ����������.
#
# attr - ������������ ��������, �������� ��������;
# type - ��� ���������, ��������� ��� ������������;
# rusname - ������� ��������, ����� �� ��������� ��� �����������;
# hidden - ����� 1, �����
# readonly - ������������� ��� ������ ������ ��� ��������� � ����������
# db_field - ���� � �������
# default - �������� �� ��������� (���� ������ ����� ��� ��������)
# ----------------------------------------------------------------------------
sub required_properties
{
return (
{ # ������������� ���������, �������� �� ���� �����...
'attr' => 'id',
'type' => 'integer',
'rusname' => '������������� ���������',
'hidden' => 1,
'auto' => 1,
'readonly' => 1,
'db_field' => 'id',
'db_type' => 'integer',
'db_opts' => "not null default nextval('public.documents_id_seq'::text)",
},
{ # ����� ���������...
'attr' => 'class',
'type' => 'string',
'rusname' => '����� ���������',
'hidden' => 1,
'readonly' => 1,
'db_field' => 'class',
'db_type' => 'varchar(48)',
'db_opts' => 'not null',
},
{ # ����� �������� ���������, ��������� ����...
'attr' => 'start',
'type' => 'datetime',
'rusname' => '����/����� ������',
'db_field' => 'start',
'db_type' => 'timestamp',
'db_opts' => 'not null',
},
{ # ����� ����������� ���������, ��������� ����...
'attr' => 'finish',
'type' => 'datetime',
'rusname' => '����/����� ���������',
'db_field' => 'finish',
'db_type' => 'timestamp',
'db_opts' => 'not null',
},
{ # ���� ���� ������� �������� ����������...
'attr' => 'external_id',
'type' => 'integer',
'rusname' => '������� id',
'db_field' => 'external_id',
'db_type' => 'integer',
},
{ # ���� ���� ������� �������� ����������...
'attr' => 'event_id',
'type' => 'integer',
'rusname' => '�������',
'db_field' => 'event_id',
'db_type' => 'integer',
},
{ # ���� ���� ������� �������� ����������...
'attr' => 'place_id',
'type' => 'integer',
'rusname' => '����� ����������',
'db_field' => 'place_id',
'db_type' => 'integer',
},
);
}
########### FILTERS DESCRIPTION ####################################################################################
sub _excludes_filter {
my ($self,%opts)=@_;
if (exists $opts{excludes}) {
# - ���������� �� ������
my @eids = ();
if (ref($opts{excludes}) eq 'ARRAY') {
@eids = @{ $opts{excludes} };
} elsif ($opts{excludes} =~ /[^\d\,]/) {
warn "Contenido Warning: � ������ ��������������� ��� ���������� ����������� ���������� ��������. �������� excludes ������������ (".$opts{excludes}.").\n";
} else {
@eids = split(',', $opts{excludes});
}
my $excludes = join(',', @eids);
# �������� ������ �������, ���� ��� join-������.
# ������ ��� � ���� ������ ������� ����� ���������� ������� �� ������� links,
# ��� ����������� ������ ������� ������.
if (@eids) {
if (exists($opts{ldest}) || exists($opts{lsource})) {
if (exists($opts{ldest})) {
return " (l.source_id not in ($excludes)) ";
} elsif (exists($opts{lsource})) {
return " (l.dest_id not in ($excludes)) ";
}
} else {
return " (d.id not in ($excludes)) ";
}
}
}
return undef;
}
sub _get_orders {
my ($self, %opts) = @_;
if ($opts{order_by}) {
return ' order by '.$opts{order_by};
} else {
return ' order by start desc,finish desc';
}
return undef;
}
1;