diff --git a/lib/Pear/LocalLoop/Schema/Result/Entity.pm b/lib/Pear/LocalLoop/Schema/Result/Entity.pm index 3839a71..f929692 100644 --- a/lib/Pear/LocalLoop/Schema/Result/Entity.pm +++ b/lib/Pear/LocalLoop/Schema/Result/Entity.pm @@ -56,6 +56,20 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); +__PACKAGE__->has_many( + "global_user_medals", + "Pear::LocalLoop::Schema::Result::GlobalUserMedals", + { "foreign.entity_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +__PACKAGE__->has_many( + "global_user_medal_progress", + "Pear::LocalLoop::Schema::Result::GlobalUserMedalProgress", + { "foreign.entity_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + sub name { my $self = shift; diff --git a/lib/Pear/LocalLoop/Schema/Result/GlobalMedalGroup.pm b/lib/Pear/LocalLoop/Schema/Result/GlobalMedalGroup.pm new file mode 100644 index 0000000..daae226 --- /dev/null +++ b/lib/Pear/LocalLoop/Schema/Result/GlobalMedalGroup.pm @@ -0,0 +1,34 @@ +package Pear::LocalLoop::Schema::Result::GlobalMedalGroup; + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +__PACKAGE__->table("global_medal_group"); + +__PACKAGE__->add_columns( + "id" => { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + }, + "group_name" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, +); + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->add_unique_constraint(["group_name"]); + +__PACKAGE__->has_many( + "medals", + "Pear::LocalLoop::Schema::Result::GlobalMedals", + { "foreign.group_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +1; diff --git a/lib/Pear/LocalLoop/Schema/Result/GlobalMedals.pm b/lib/Pear/LocalLoop/Schema/Result/GlobalMedals.pm new file mode 100644 index 0000000..67b6c52 --- /dev/null +++ b/lib/Pear/LocalLoop/Schema/Result/GlobalMedals.pm @@ -0,0 +1,40 @@ +package Pear::LocalLoop::Schema::Result::GlobalMedals; + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +__PACKAGE__->table("global_medals"); + +__PACKAGE__->add_columns( + "id" => { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + }, + "group_id" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, + "threshold" => { + data_type => "integer", + is_nullable => 0, + }, + "points" => { + data_type => "integer", + is_nullable => 0, + }, +); + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->belongs_to( + "group", + "Pear::LocalLoop::Schema::Result::GlobalMedalGroup", + { id => "group_id" }, + { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" }, +); + +1; diff --git a/lib/Pear/LocalLoop/Schema/Result/GlobalUserMedalProgress.pm b/lib/Pear/LocalLoop/Schema/Result/GlobalUserMedalProgress.pm new file mode 100644 index 0000000..b3b159a --- /dev/null +++ b/lib/Pear/LocalLoop/Schema/Result/GlobalUserMedalProgress.pm @@ -0,0 +1,47 @@ +package Pear::LocalLoop::Schema::Result::GlobalUserMedals; + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +__PACKAGE__->table("global_user_medals"); + +__PACKAGE__->add_columns( + "id" => { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + }, + "entity_id" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, + "group_id" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, + "total" => { + data_type => "integer", + is_nullable => 0, + }, +); + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->belongs_to( + "entity", + "Pear::LocalLoop::Schema::Result::Entity", + "entity_id", +); + +__PACKAGE__->belongs_to( + "group", + "Pear::LocalLoop::Schema::Result::GlobalMedalGroup", + { id => "group_id" }, + { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" }, +); + +1; diff --git a/lib/Pear/LocalLoop/Schema/Result/GlobalUserMedals.pm b/lib/Pear/LocalLoop/Schema/Result/GlobalUserMedals.pm new file mode 100644 index 0000000..d30a496 --- /dev/null +++ b/lib/Pear/LocalLoop/Schema/Result/GlobalUserMedals.pm @@ -0,0 +1,61 @@ +package Pear::LocalLoop::Schema::Result::GlobalUserMedals; + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +__PACKAGE__->load_components(qw/ + InflateColumn::DateTime + TimeStamp +/); + +__PACKAGE__->table("global_user_medals"); + +__PACKAGE__->add_columns( + "id" => { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + }, + "entity_id" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, + "group_id" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, + "points" => { + data_type => "integer", + is_nullable => 0, + }, + "awarded_at" => { + data_type => "datetime", + is_nullable => 0, + set_on_create => 1, + }, + "threshold" => { + data_type => "integer", + is_nullable => 0, + }, +); + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->belongs_to( + "entity", + "Pear::LocalLoop::Schema::Result::Entity", + "entity_id", +); + +__PACKAGE__->belongs_to( + "group", + "Pear::LocalLoop::Schema::Result::GlobalMedalGroup", + { id => "group_id" }, + { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" }, +); + +1; diff --git a/lib/Pear/LocalLoop/Schema/Result/TransactionCategory.pm b/lib/Pear/LocalLoop/Schema/Result/TransactionCategory.pm index f921c13..87c2462 100644 --- a/lib/Pear/LocalLoop/Schema/Result/TransactionCategory.pm +++ b/lib/Pear/LocalLoop/Schema/Result/TransactionCategory.pm @@ -35,3 +35,5 @@ __PACKAGE__->belongs_to( "transaction_id", { cascade_delete => 0 }, ); + +1;