add remove_sequence helper
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object / Constraint.pm
CommitLineData
4f4fd192 1use MooseX::Declare;
ebf2721d 2class SQL::Translator::Object::Constraint extends SQL::Translator::Object {
f49a2a49 3 use MooseX::Types::Moose qw(ArrayRef Bool HashRef Maybe Str Undef);
035b8503 4 use MooseX::MultiMethods;
3c557f72 5 use SQL::Translator::Types qw(Column MatchType Table);
f49a2a49 6
7 has 'table' => (
8 is => 'rw',
9 isa => Table,
f49a2a49 10 weak_ref => 1,
11 );
4f4fd192 12
13 has 'name' => (
14 is => 'rw',
70ab6d8c 15 isa => Str,
16 default => '',
4f4fd192 17 required => 1
18 );
19
20 has 'columns' => (
28bd628e 21 traits => ['Hash'],
4f4fd192 22 is => 'rw',
23 isa => HashRef[Column],
28bd628e 24 handles => {
25 exists_column => 'exists',
26 column_ids => 'keys',
27 get_columns => 'values',
28 get_column => 'get',
29 add_column => 'set',
452c34e6 30 clear_columns => 'clear',
4f4fd192 31 },
32 default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
33 );
34
35 has 'type' => (
36 is => 'rw',
37 isa => Str,
4f4fd192 38 );
526e74d1 39
b750d2f1 40 has 'deferrable' => (
41 is => 'rw',
42 isa => Bool,
075b652f 43 default => 1
b750d2f1 44 );
45
46 has 'expression' => (
47 is => 'rw',
48 isa => Str,
49 );
50
d63c8da0 51 has 'reference_table' => (
52 isa => Maybe[Str],
53 is => 'rw',
54 );
55
56 has 'reference_columns' => (
106f5e00 57 isa => ArrayRef,
58 traits => ['Array'],
59 handles => {
60 reference_columns => 'elements',
61 },
62 default => sub { [] },
cb13230a 63 );
64
65 has 'match_type' => (
3c557f72 66 isa => MatchType,
d191bceb 67 is => 'rw',
3c557f72 68 coerce => 1,
d191bceb 69 lazy => 1,
70 default => ''
d63c8da0 71 );
72
51700db2 73 around add_column(Column $column) { $self->$orig($column->name, $column) }
4f4fd192 74}