50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| package App::Netdisco::DB::Result::Virtual::NodeMonitor;
 | |
| 
 | |
| use strict;
 | |
| use warnings;
 | |
| 
 | |
| use utf8;
 | |
| use base 'DBIx::Class::Core';
 | |
| 
 | |
| __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
 | |
| 
 | |
| __PACKAGE__->table('node_monitor_virtual');
 | |
| __PACKAGE__->result_source_instance->is_virtual(1);
 | |
| __PACKAGE__->result_source_instance->view_definition(<<'ENDSQL');
 | |
| SELECT nm.why, nm.cc, trim(trailing '.' from trim(trailing '0123456789' from date::text)) as date,
 | |
|        n.mac, n.switch, n.port,
 | |
|        d.name, d.location,
 | |
|        dp.name AS portname
 | |
| FROM node_monitor nm, node n, device d, device_port dp
 | |
| WHERE ((nm.mac = n.mac) OR (nm.matchoui AND (substring(nm.mac::text from 1 for 8) = n.oui)))
 | |
|   AND nm.active
 | |
|   AND nm.cc IS NOT NULL
 | |
|   AND d.ip = n.switch
 | |
|   AND dp.ip = n.switch
 | |
|   AND dp.port = n.port
 | |
|   AND d.last_macsuck = n.time_last
 | |
| ENDSQL
 | |
| 
 | |
| __PACKAGE__->add_columns(
 | |
|   "why",
 | |
|   { data_type => "text", is_nullable => 1 },
 | |
|   "cc",
 | |
|   { data_type => "text", is_nullable => 0 },
 | |
|   "date",
 | |
|   { data_type => "timestamp", is_nullable => 0 },
 | |
|   "mac",
 | |
|   { data_type => "macaddr", is_nullable => 0 },
 | |
|   "switch",
 | |
|   { data_type => "inet", is_nullable => 0 },
 | |
|   "port",
 | |
|   { data_type => "text", is_nullable => 0 },
 | |
|   "name",
 | |
|   { data_type => "text", is_nullable => 0 },
 | |
|   "location",
 | |
|   { data_type => "text", is_nullable => 1 },
 | |
|   "portname",
 | |
|   { data_type => "text", is_nullable => 0 },
 | |
| );
 | |
| 
 | |
| 1;
 |