X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FTypes.pm;h=3a6f84639ca58c7407e34ff4a8a17ca449d3509e;hb=7f897a63d37d3096c6535a2417aefe599057400f;hp=780cda149a3261982590cc0e56455658f08cd2e9;hpb=a8eeeefc5595b051163cc5914ee04564701b3bfd;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/lib/SQL/Translator/Types.pm b/lib/SQL/Translator/Types.pm index 780cda1..3a6f846 100644 --- a/lib/SQL/Translator/Types.pm +++ b/lib/SQL/Translator/Types.pm @@ -1,7 +1,10 @@ use MooseX::Declare; class SQL::Translator::Types { - use MooseX::Types::Moose qw(ArrayRef CodeRef Int Maybe Str Undef); - use MooseX::Types -declare, [qw(Column Constraint ForeignKey Index PrimaryKey Procedure Schema Sequence Table Trigger View DBIHandle ColumnSize Parser Producer)]; + use MooseX::Types::Moose qw(ArrayRef CodeRef HashRef Int Maybe Str Undef); + use MooseX::Types -declare, [qw(Column Constraint ForeignKey Index PrimaryKey Procedure Schema Sequence Table Trigger View + Bit DBIHandle MatchType Parser Producer Translator DBICSchema)]; + + class_type DBICSchema, { class => 'DBIx::Class::Schema' }; class_type Column, { class => 'SQL::Translator::Object::Column' }; class_type Constraint, { class => 'SQL::Translator::Object::Constraint' }; @@ -17,12 +20,29 @@ class SQL::Translator::Types { class_type Parser, { class => 'SQL::Translator::Parser' }; class_type Producer, { class => 'SQL::Translator::Producer' }; + class_type Translator, { class => 'SQL::Translator' }; + + coerce Column, from HashRef, via { SQL::Translator::Object::Column->new($_) }; + coerce Constraint, from HashRef, via { SQL::Translator::Object::Constraint->new($_) }; + coerce ForeignKey, from HashRef, via { SQL::Translator::Object::ForeignKey->new($_) }; + coerce Index, from HashRef, via { SQL::Translator::Object::Index->new($_) }; + coerce PrimaryKey, from HashRef, via { SQL::Translator::Object::PrimaryKey->new($_) }; + coerce Procedure, from HashRef, via { SQL::Translator::Object::Procedure->new($_) }; + coerce Schema, from HashRef, via { SQL::Translator::Object::Schema->new($_) }; + coerce Sequence, from HashRef, via { SQL::Translator::Object::Sequence->new($_) }; + coerce Table, from HashRef, via { SQL::Translator::Object::Table->new($_) }; + coerce Trigger, from HashRef, via { SQL::Translator::Object::Trigger->new($_) }; + coerce View, from HashRef, via { SQL::Translator::Object::View->new($_) }; + + coerce ArrayRef, from Str, via { [ $_ ] }; + + subtype MatchType, as Str, where { /^(full|partial|simple)$/ || $_ eq '' }; + coerce MatchType, from Str, via { lc $_ }; - subtype ColumnSize, as ArrayRef[Int]; - coerce ColumnSize, - from Int, via { [ $_ ] }, - from Str, via { [ split /,/ ] }, - from Undef, via { [ 0 ] }; + subtype Bit, as Int, where { $_ == 1 || $_ == 0 }; + coerce Bit, + from Undef, via { 0 }, + from Str, via { length() ? 1 : 0 }; subtype DBIHandle, as 'DBI::db';