From 4d85d112af90611dc3bdcb268c53d720da510621 Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Wed, 14 Mar 2018 12:57:59 +0100 Subject: [PATCH] TT#14662 add phonebook tables schema * reseller_phonebook * contract_phonebook * subscriber_phonebook Change-Id: Ica074f05b9706837b94e0f9bd7b4f81e9eaca3b0 --- lib/NGCP/Schema/Result/contract_phonebook.pm | 141 +++++++++++++++++ lib/NGCP/Schema/Result/contracts.pm | 7 + lib/NGCP/Schema/Result/reseller_phonebook.pm | 141 +++++++++++++++++ lib/NGCP/Schema/Result/resellers.pm | 7 + .../Schema/Result/subscriber_phonebook.pm | 149 ++++++++++++++++++ lib/NGCP/Schema/Result/voip_subscribers.pm | 7 + 6 files changed, 452 insertions(+) create mode 100644 lib/NGCP/Schema/Result/contract_phonebook.pm create mode 100644 lib/NGCP/Schema/Result/reseller_phonebook.pm create mode 100644 lib/NGCP/Schema/Result/subscriber_phonebook.pm diff --git a/lib/NGCP/Schema/Result/contract_phonebook.pm b/lib/NGCP/Schema/Result/contract_phonebook.pm new file mode 100644 index 00000000..ec24ec35 --- /dev/null +++ b/lib/NGCP/Schema/Result/contract_phonebook.pm @@ -0,0 +1,141 @@ +package NGCP::Schema::Result::contract_phonebook; + +use strict; +use warnings; + +use Scalar::Util qw(blessed); +use parent 'DBIx::Class::Core'; + +our $VERSION = '2.007'; + +__PACKAGE__->table("billing.contract_phonebook"); + +__PACKAGE__->add_columns( + "id", + { + data_type => "integer", + extra => { unsigned => 1 }, + is_auto_increment => 1, + is_nullable => 0, + }, + "contract_id", + { + data_type => "integer", + extra => { unsigned => 1 }, + is_foreign_key => 1, + is_nullable => 0, + }, + "name", + { data_type => "varchar", is_nullable => 0, size => 255 }, + "number", + { data_type => "varchar", is_nullable => 0, size => 255 }, +); + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->add_unique_constraint("rel_u_idx", [qw/contract_id number/]); + +__PACKAGE__->belongs_to( + "contract", + "NGCP::Schema::Result::contracts", + { id => "contract_id" }, + { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, +); + +1; +__END__ + +=encoding UTF-8 + +=head1 NAME + +NGCP::Schema::Result::contract_phonebook + +=head1 DESCRIPTION + +This module is a schema class for the NGCP database table "billing.contract_phonebook". + +=head1 COMPONENTS LOADED + +=over 4 + +=back + +=head1 TABLE: C + +=head1 ACCESSORS + +=head2 id + + data_type: 'integer' + extra: {unsigned => 1} + is_auto_increment: 1 + is_nullable: 0 + +=head2 contract_id + + data_type: 'integer' + extra: {unsigned => 1} + is_foreign_key: 1 + is_nullable: 0 + +=head2 name + + data_type: 'varchar' + is_nullable: 0 + size: 255 + +=head2 number + + 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 + +=head1 RELATIONS + +=head2 contract + +Type: belongs_to + +Related object: L + +=head1 AUTHOR + +Sipwise Development Team C<< >> + +=head1 LICENSE + +This software is Copyright © 2018 by Sipwise GmbH, Austria. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this package. If not, see . diff --git a/lib/NGCP/Schema/Result/contracts.pm b/lib/NGCP/Schema/Result/contracts.pm index bab34e69..761ae3b2 100644 --- a/lib/NGCP/Schema/Result/contracts.pm +++ b/lib/NGCP/Schema/Result/contracts.pm @@ -283,6 +283,13 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); +__PACKAGE__->has_many( + "phonebook", + "NGCP::Schema::Result::contract_phonebook", + { "foreign.contract_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + sub TO_JSON { my ($self) = @_; return { diff --git a/lib/NGCP/Schema/Result/reseller_phonebook.pm b/lib/NGCP/Schema/Result/reseller_phonebook.pm new file mode 100644 index 00000000..4994cd64 --- /dev/null +++ b/lib/NGCP/Schema/Result/reseller_phonebook.pm @@ -0,0 +1,141 @@ +package NGCP::Schema::Result::reseller_phonebook; + +use strict; +use warnings; + +use Scalar::Util qw(blessed); +use parent 'DBIx::Class::Core'; + +our $VERSION = '2.007'; + +__PACKAGE__->table("billing.reseller_phonebook"); + +__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_foreign_key => 1, + is_nullable => 0, + }, + "name", + { data_type => "varchar", is_nullable => 0, size => 255 }, + "number", + { data_type => "varchar", is_nullable => 0, size => 255 }, +); + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->add_unique_constraint("rel_u_idx", [qw/reseller_id number/]); + +__PACKAGE__->belongs_to( + "reseller", + "NGCP::Schema::Result::resellers", + { id => "reseller_id" }, + { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, +); + +1; +__END__ + +=encoding UTF-8 + +=head1 NAME + +NGCP::Schema::Result::reseller_phonebook + +=head1 DESCRIPTION + +This module is a schema class for the NGCP database table "billing.reseller_phonebook". + +=head1 COMPONENTS LOADED + +=over 4 + +=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_foreign_key: 1 + is_nullable: 0 + +=head2 name + + data_type: 'varchar' + is_nullable: 0 + size: 255 + +=head2 number + + 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 + +=head1 RELATIONS + +=head2 reseller + +Type: belongs_to + +Related object: L + +=head1 AUTHOR + +Sipwise Development Team C<< >> + +=head1 LICENSE + +This software is Copyright © 2018 by Sipwise GmbH, Austria. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this package. If not, see . diff --git a/lib/NGCP/Schema/Result/resellers.pm b/lib/NGCP/Schema/Result/resellers.pm index febc715d..4d74cf9b 100644 --- a/lib/NGCP/Schema/Result/resellers.pm +++ b/lib/NGCP/Schema/Result/resellers.pm @@ -197,6 +197,13 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); +__PACKAGE__->has_many( + "phonebook", + "NGCP::Schema::Result::reseller_phonebook", + { "foreign.reseller_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + sub TO_JSON { my ($self) = @_; return { diff --git a/lib/NGCP/Schema/Result/subscriber_phonebook.pm b/lib/NGCP/Schema/Result/subscriber_phonebook.pm new file mode 100644 index 00000000..79cd4092 --- /dev/null +++ b/lib/NGCP/Schema/Result/subscriber_phonebook.pm @@ -0,0 +1,149 @@ +package NGCP::Schema::Result::subscriber_phonebook; + +use strict; +use warnings; + +use Scalar::Util qw(blessed); +use parent 'DBIx::Class::Core'; + +our $VERSION = '2.007'; + +__PACKAGE__->table("billing.subscriber_phonebook"); + +__PACKAGE__->add_columns( + "id", + { + data_type => "integer", + extra => { unsigned => 1 }, + is_auto_increment => 1, + is_nullable => 0, + }, + "subscriber_id", + { + data_type => "integer", + extra => { unsigned => 1 }, + is_foreign_key => 1, + is_nullable => 0, + }, + "name", + { data_type => "varchar", is_nullable => 0, size => 255 }, + "number", + { data_type => "varchar", is_nullable => 0, size => 255 }, + "shared", + { data_type => "tinyint", default_value => 0, is_nullable => 0 }, +); + +__PACKAGE__->set_primary_key("id"); + +__PACKAGE__->add_unique_constraint("rel_u_idx", [qw/subscriber_id number/]); + +__PACKAGE__->belongs_to( + "subscriber", + "NGCP::Schema::Result::voip_subscribers", + { id => "subscriber_id" }, + { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, +); + +1; +__END__ + +=encoding UTF-8 + +=head1 NAME + +NGCP::Schema::Result::subscriber_phonebook + +=head1 DESCRIPTION + +This module is a schema class for the NGCP database table "billing.subscriber_phonebook". + +=head1 COMPONENTS LOADED + +=over 4 + +=back + +=head1 TABLE: C + +=head1 ACCESSORS + +=head2 id + + data_type: 'integer' + extra: {unsigned => 1} + is_auto_increment: 1 + is_nullable: 0 + +=head2 subscriber_id + + data_type: 'integer' + extra: {unsigned => 1} + is_foreign_key: 1 + is_nullable: 0 + +=head2 name + + data_type: 'varchar' + is_nullable: 0 + size: 255 + +=head2 number + + data_type: 'varchar' + is_nullable: 0 + size: 255 + +=head2 shared + + data_type: 'tinyint' + is_nullable: 0 + default_value: 0 + +=head1 PRIMARY KEY + +=over 4 + +=item * L + +=back + +=head1 UNIQUE CONSTRAINTS + +=head2 C + +=over 4 + +=item * L + +=item * L + +=back + +=head1 RELATIONS + +=head2 subscriber + +Type: belongs_to + +Related object: L + +=head1 AUTHOR + +Sipwise Development Team C<< >> + +=head1 LICENSE + +This software is Copyright © 2018 by Sipwise GmbH, Austria. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this package. If not, see . diff --git a/lib/NGCP/Schema/Result/voip_subscribers.pm b/lib/NGCP/Schema/Result/voip_subscribers.pm index 23dc72a3..153309b6 100644 --- a/lib/NGCP/Schema/Result/voip_subscribers.pm +++ b/lib/NGCP/Schema/Result/voip_subscribers.pm @@ -128,6 +128,13 @@ __PACKAGE__->belongs_to( { cascade_copy => 0, cascade_delete => 0 }, ); +__PACKAGE__->has_many( + "phonebook", + "NGCP::Schema::Result::subscriber_phonebook", + { "foreign.subscriber_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + sub TO_JSON { my ($self) = @_; return {