diff --git a/lib/Pear/LocalLoop/Schema/Result/Category.pm b/lib/Pear/LocalLoop/Schema/Result/Category.pm new file mode 100644 index 0000000..0c1cc66 --- /dev/null +++ b/lib/Pear/LocalLoop/Schema/Result/Category.pm @@ -0,0 +1,40 @@ +package Pear::LocalLoop::Schema::Result::Category; + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +__PACKAGE__->table("category"); + +__PACKAGE__->add_columns( + "id" => { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + }, + "name" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, +); + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->add_unique_constraint(["name"]); + +__PACKAGE__->has_many( + "transaction_category", + "Pear::LocalLoop::Schema::Result::TransactionCategory", + { "foreign.category_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +__PACKAGE__->many_to_many( + "transactions", + "transaction_category", + "transaction", +); + +1; diff --git a/lib/Pear/LocalLoop/Schema/Result/Transaction.pm b/lib/Pear/LocalLoop/Schema/Result/Transaction.pm index 32d21c2..b098aa8 100644 --- a/lib/Pear/LocalLoop/Schema/Result/Transaction.pm +++ b/lib/Pear/LocalLoop/Schema/Result/Transaction.pm @@ -71,4 +71,9 @@ __PACKAGE__->belongs_to( { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" }, ); +__PACKAGE__->might_have( + "category", + "Pear::LocalLoop::Schema::Result::TransactionCategory" => "transaction_id", +); + 1; diff --git a/lib/Pear/LocalLoop/Schema/Result/TransactionCategory.pm b/lib/Pear/LocalLoop/Schema/Result/TransactionCategory.pm new file mode 100644 index 0000000..0e91891 --- /dev/null +++ b/lib/Pear/LocalLoop/Schema/Result/TransactionCategory.pm @@ -0,0 +1,35 @@ +package Pear::LocalLoop::Schema::Result::TransactionCategory; + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +__PACKAGE__->table("transaction_category"); + +__PACKAGE__->add_columns( + "category_id" => { + data_type => "integer", + is_nullable => 0, + is_foreign_key => 1, + }, + "transaction_id" => { + data_type => 'integer', + is_nullable => 0, + is_foreign_key => 1, + }, +); + +__PACKAGE__->add_unique_constraint(["transaction_id"]); + +__PACKAGE__->belongs_to( + "category", + "Pear::LocalLoop::Schema::Result::Category", + "category_id", +); + +__PACKAGE__->belongs_to( + "transaction", + "Pear::LocalLoop::Schema::Result::Transaction", + "transaction_id", +);