72 lines
1.3 KiB
Perl
72 lines
1.3 KiB
Perl
package App::Netdisco::DB::Result::Virtual::ApRadioChannelPower;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use base 'DBIx::Class::Core';
|
|
|
|
__PACKAGE__->table_class('DBIx::Class::ResultSource::View');
|
|
|
|
__PACKAGE__->table('ap_radio_channel_power');
|
|
__PACKAGE__->result_source_instance->is_virtual(1);
|
|
__PACKAGE__->result_source_instance->view_definition(<<ENDSQL
|
|
SELECT w.channel,
|
|
w.power,
|
|
w.ip,
|
|
w.port,
|
|
dp.name AS port_name,
|
|
dp.descr,
|
|
d.name AS device_name,
|
|
d.dns,
|
|
d.model,
|
|
d.location,
|
|
CASE
|
|
WHEN w.power > 0 THEN round((10.0 * log(w.power) / log(10))::numeric, 1)
|
|
ELSE NULL
|
|
END AS power2
|
|
FROM device_port_wireless AS w
|
|
JOIN device_port AS dp ON dp.port = w.port
|
|
AND dp.ip = w.ip
|
|
JOIN device AS d ON d.ip = w.ip
|
|
WHERE w.channel != '0'
|
|
ENDSQL
|
|
);
|
|
|
|
__PACKAGE__->add_columns(
|
|
'channel' => {
|
|
data_type => 'integer',
|
|
},
|
|
'power' => {
|
|
data_type => 'integer',
|
|
},
|
|
'ip' => {
|
|
data_type => 'inet',
|
|
},
|
|
'port' => {
|
|
data_type => 'text',
|
|
},
|
|
'port_name' => {
|
|
data_type => 'text',
|
|
},
|
|
'descr' => {
|
|
data_type => 'text',
|
|
},
|
|
'device_name' => {
|
|
data_type => 'text',
|
|
},
|
|
'dns' => {
|
|
data_type => 'text',
|
|
},
|
|
'model' => {
|
|
data_type => 'text',
|
|
},
|
|
'location' => {
|
|
data_type => 'text',
|
|
},
|
|
'power2' => {
|
|
data_type => 'numeric',
|
|
},
|
|
);
|
|
|
|
1;
|