Line # Revision Author
1 3 ahitrov@rambler.ru package SQL::DocumentTable;
2
3 use strict;
4 use base 'SQL::ProtoTable';
5
6 sub db_table
7 {
8 return 'documents';
9 }
10
11 sub available_filters {
12 my @available_filters = qw(
13 _class_filter
14 _status_filter
15 _in_id_filter
16 _id_filter
17 _name_filter
18 _class_excludes_filter
19 _sfilter_filter
20 _datetime_filter
21 _date_equal_filter
22 _date_filter
23 _previous_days_filter
24 _prev_to_filter
25 _next_to_filter
26 _s_filter
27
28 _excludes_filter
29 _link_filter
30 );
31 return \@available_filters;
32 }
33
34 # ----------------------------------------------------------------------------
35 # �������� ������ � ��������, ������ ��� ������� �����!
36 # ��� ����� �������� - ���������� ��� ���� ����������.
37 #
38 # attr - ������������ ��������, �������� ��������;
39 # type - ��� ���������, ��������� ��� ������������;
40 # rusname - ������� ��������, ����� �� ��������� ��� �����������;
41 # hidden - ����� 1, �����
42 # readonly - ������������� ��� ������ ������ ��� ��������� � ����������
43 # db_field - ���� � �������
44 # default - �������� �� ��������� (���� ������ ����� ��� ��������)
45 # ----------------------------------------------------------------------------
46 sub required_properties
47 {
48 487 ahitrov my $self = shift;
49 my $id_sequence = $self->db_id_sequence();
50 3 ahitrov@rambler.ru return (
51 { # ������������� ���������, �������� �� ���� �����...
52 'attr' => 'id',
53 'type' => 'integer',
54 'rusname' => '������������� ���������',
55 'hidden' => 1,
56 'readonly' => 1,
57 'auto' => 1,
58 'db_field' => 'id',
59 'db_type' => 'integer',
60 487 ahitrov 'db_opts' => "not null default nextval('public.$id_sequence'::text)",
61 3 ahitrov@rambler.ru },
62 { # ����� ���������...
63 'attr' => 'class',
64 'type' => 'string',
65 'rusname' => '����� ���������',
66 'column' => 3,
67 'hidden' => 1,
68 'readonly' => 1,
69 'db_field' => 'class',
70 'db_type' => 'varchar(48)',
71 'db_opts' => 'not null',
72 },
73 { # ��� ���������...
74 'attr' => 'name',
75 'type' => 'string',
76 'rusname' => '��������',
77 'column' => 2,
78 'db_field' => 'name',
79 'db_type' => 'varchar(255)',
80 },
81 { # ����� �������� ���������, ��������� ����...
82 'attr' => 'ctime',
83 'type' => 'datetime',
84 'rusname' => '����� ��������',
85 'readonly' => 1,
86 'auto' => 1,
87 'hidden' => 1,
88 'db_field' => 'ctime',
89 'db_type' => 'timestamp',
90 'db_opts' => 'not null default now()',
91 'default' => 'CURRENT_TIMESTAMP',
92 },
93 { # ����� ����������� ���������, ��������� ����...
94 'attr' => 'mtime',
95 'type' => 'datetime',
96 'rusname' => '����� �����������',
97 'hidden' => 1,
98 'auto' => 1,
99 'db_field' => 'mtime',
100 'db_type' => 'timestamp',
101 'db_opts' => 'not null default now()',
102 'default' => 'CURRENT_TIMESTAMP',
103 },
104 { # ���� � ����� ���������...
105 'attr' => 'dtime',
106 'type' => 'datetime',
107 'rusname' => '���� � ����� ���������<sup style="color:#888;">&nbsp;1)</sup>',
108 'column' => 1,
109 'db_field' => 'dtime',
110 'db_type' => 'timestamp',
111 'db_opts' => 'not null default now()',
112 'default' => 'CURRENT_TIMESTAMP',
113 },
114 { # ������ ������, �������������� ����������� �������...
115 'attr' => 'sections',
116 'type' => 'sections_list',
117 'rusname' => '������',
118 'hidden' => 1,
119 'db_field' => 'sections',
120 'db_type' => 'integer[]',
121 },
122 { # ���� ���� ������� �������� ����������...
123 'attr' => 'status',
124 'type' => 'status',
125 'rusname' => '������',
126 'db_field' => 'status',
127 'db_type' => 'integer',
128 },
129 );
130 }
131
132 1;
133