package RackTables::Schema::Result::viewAssociatedPorts;
use Moose;
use MooseX::NonMoose;
use RackTables::Types;
use namespace::autoclean;
extends 'DBIx::Class::Core';
__PACKAGE__->table_class("DBIx::Class::ResultSource::View");
__PACKAGE__->table("associated_ports");
__PACKAGE__->result_source_instance->is_virtual(1);
__PACKAGE__->result_source_instance->view_definition(q{
SELECT
id,
name,
label,
l2address,
iif_id,
(SELECT iif_name FROM PortInnerInterface WHERE id = iif_id) AS iif_name,
type AS oif_id,
(SELECT dict_value FROM Dictionary WHERE dict_key = type) AS oif_name,
(
SELECT porta FROM Link WHERE portb = id
UNION
SELECT portb FROM Link WHERE porta = id
) AS peer_port_id,
(SELECT peer.name FROM Port peer WHERE peer.id = peer_port_id) AS peer_port_name,
(SELECT peer.object_id FROM Port peer WHERE peer.id = peer_port_id) AS peer_object_id,
(SELECT peer.name FROM RackObject peer WHERE peer.id = peer_object_id) AS peer_object_name,
reservation_comment
FROM Port
WHERE object_id = ?
});
__PACKAGE__->add_columns(
id => { RT_UNSIGNED },
name => { RT_STRING, is_nullable => 0 },
label => { RT_STRING },
l2address => { RT_STRING, size => 64 },
iif_id => { RT_UNSIGNED },
iif_name => { RT_STRING },
oif_id => { RT_UNSIGNED },
oif_name => { RT_STRING },
peer_port_id => { RT_UNSIGNED },
peer_port_name => { RT_STRING },
peer_object_id => { RT_UNSIGNED },
peer_object_name => { RT_STRING },
reservation_comment => { RT_STRING },
);
__PACKAGE__->meta->make_immutable;
__END__
=head1 NAME
RackTables::Schema::Result::viewAssociatedPorts
=head1 DESCRIPTION
This view is a query to find the ports associated with a given device.
=head1 PARAMETERS
The query expects the following parameter:
=over
=item *
ID of the RackObject
=back
=head1 ACCESSORS
=head2 id
integer, port ID
=head2 name
string, port name
=head2 label
string, port label
=head2 l2address
string, port L2 address
=head2 iif_id
integer, inner interface ID
=head2 iif_name
string, inner interface name
=head2 oif_id
integer, outter interface ID
=head2 oif_name
string, outter interface name
=head2 peer_port_id
integer, peer port ID
=head2 peer_port_name
string, peer port name
=head2 peer_object_id
integer, peer object ID
=head2 peer_object_name
string, peer object name
=head2 reservation_comment
string, reservation comment
=head1 AUTHOR
Sebastien Aperghis-Tramoni
=cut