From 2148479191cf27bd824012f3277d967a8bc9e1b5 Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Mon, 14 Apr 2014 20:41:28 +0200 Subject: [PATCH] MT#6693 Add subscriber profile sets. --- lib/NGCP/Schema/Result/resellers.pm | 4 +- .../Result/voip_subscriber_profile_sets.pm | 122 ++++++++++++++++++ .../Schema/Result/voip_subscriber_profiles.pm | 12 +- 3 files changed, 131 insertions(+), 7 deletions(-) create mode 100644 lib/NGCP/Schema/Result/voip_subscriber_profile_sets.pm diff --git a/lib/NGCP/Schema/Result/resellers.pm b/lib/NGCP/Schema/Result/resellers.pm index 5574ad07..326ab79a 100644 --- a/lib/NGCP/Schema/Result/resellers.pm +++ b/lib/NGCP/Schema/Result/resellers.pm @@ -132,8 +132,8 @@ __PACKAGE__->has_many( ); __PACKAGE__->has_many( - "voip_subscriber_profiles", - "NGCP::Schema::Result::voip_subscriber_profiles", + "voip_subscriber_profile_sets", + "NGCP::Schema::Result::voip_subscriber_profile_sets", { "foreign.reseller_id" => "self.id" }, { cascade_copy => 0, cascade_delete => 0 }, ); diff --git a/lib/NGCP/Schema/Result/voip_subscriber_profile_sets.pm b/lib/NGCP/Schema/Result/voip_subscriber_profile_sets.pm new file mode 100644 index 00000000..1be996bd --- /dev/null +++ b/lib/NGCP/Schema/Result/voip_subscriber_profile_sets.pm @@ -0,0 +1,122 @@ +package NGCP::Schema::Result::voip_subscriber_profile_sets; +use Scalar::Util qw(blessed); +use parent 'DBIx::Class::Core'; + +our $VERSION = '2.007'; + +__PACKAGE__->load_components("InflateColumn::DateTime", "Helper::Row::ToJSON"); + + +__PACKAGE__->table("provisioning.voip_subscriber_profile_sets"); + + +__PACKAGE__->add_columns( + "id", + { + data_type => "integer", + extra => { unsigned => 1 }, + is_auto_increment => 1, + is_nullable => 0, + }, + "reseller_id", + { data_type => "integer", extra => { unsigned => 1 }, is_nullable => 0 }, + "name", + { data_type => "varchar", is_nullable => 0, size => 255 }, + "description", + { data_type => "varchar", is_nullable => 0, size => 255 }, +); + + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->belongs_to( + "reseller", + "NGCP::Schema::Result::resellers", + { id => "reseller_id" }, + { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, +); + +__PACKAGE__->has_many( + "voip_subscriber_profiles", + "NGCP::Schema::Result::voip_subscriber_profiles", + { "foreign.set_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + + +__PACKAGE__->add_unique_constraint("vsp_resname_idx", ["reseller_id", "name"]); +sub TO_JSON { + my ($self) = @_; + return { + map { blessed($_) && $_->isa('DateTime') ? $_->datetime : $_ } %{ $self->next::method } + }; +} +=encoding UTF-8 + +=head1 NAME + +NGCP::Schema::Result::voip_subscriber_profile_sets + +=head1 COMPONENTS LOADED + +=over 4 + +=item * L + +=item * L + +=back + +=head1 TABLE: C + +=head1 ACCESSORS + +=head2 id + + data_type: 'integer' + extra: {unsigned => 1} + is_auto_increment: 1 + is_nullable: 0 + +=head2 reseller_id + + data_type: 'integer' + extra: {unsigned => 1} + is_nullable: 0 + +=head2 name + + data_type: 'varchar' + is_nullable: 0 + size: 255 + +=head2 description + + data_type: 'varchar' + is_nullable: 0 + size: 255 + +=head1 PRIMARY KEY + +=over 4 + +=item * L + +=back + +=head1 UNIQUE CONSTRAINTS + +=head2 C + +=over 4 + +=item * L + +=item * L + +=back + +=cut + + +1; diff --git a/lib/NGCP/Schema/Result/voip_subscriber_profiles.pm b/lib/NGCP/Schema/Result/voip_subscriber_profiles.pm index f0552276..990340a6 100644 --- a/lib/NGCP/Schema/Result/voip_subscriber_profiles.pm +++ b/lib/NGCP/Schema/Result/voip_subscriber_profiles.pm @@ -18,21 +18,23 @@ __PACKAGE__->add_columns( is_auto_increment => 1, is_nullable => 0, }, - "reseller_id", + "set_id", { data_type => "integer", extra => { unsigned => 1 }, is_nullable => 0 }, "name", { data_type => "varchar", is_nullable => 0, size => 255 }, "description", { data_type => "varchar", is_nullable => 0, size => 255 }, + "set_default", + { data_type => "tinyint", extra => { unsigned => 1 }, is_nullable => 0 }, ); __PACKAGE__->set_primary_key("id"); __PACKAGE__->belongs_to( - "reseller", - "NGCP::Schema::Result::resellers", - { id => "reseller_id" }, + "profile_set", + "NGCP::Schema::Result::voip_subscriber_profile_sets", + { id => "set_id" }, { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, ); @@ -44,7 +46,7 @@ __PACKAGE__->has_many( ); -__PACKAGE__->add_unique_constraint("vsp_resname_idx", ["reseller_id", "name"]); +__PACKAGE__->add_unique_constraint("vsp_resname_idx", ["set_id", "name"]); sub TO_JSON { my ($self) = @_; return {