1package App::Netdisco::DB::Result::Virtual::CidrIps;
2
3use strict;
4use warnings;
5
6use utf8;
7use base 'DBIx::Class::Core';
8
9__PACKAGE__->table_class('DBIx::Class::ResultSource::View');
10
11__PACKAGE__->table('cidr_ips');
12__PACKAGE__->result_source_instance->is_virtual(1);
13__PACKAGE__->result_source_instance->view_definition(<<'ENDSQL');
14SELECT host(network (prefix) + sub.int)::inet AS ip,
15       NULL::macaddr AS mac,
16       NULL::text AS dns,
17       NULL::timestamp AS time_first,
18       NULL::timestamp AS time_last,
19       false::boolean AS active
20  FROM (
21    SELECT prefix,
22           generate_series(1, (broadcast(prefix) - network(prefix) - 1)) AS int
23      FROM (
24        SELECT ?::inet AS prefix
25      ) AS addr
26  ) AS sub
27ENDSQL
28
29__PACKAGE__->add_columns(
30  "ip",
31  { data_type => "inet", is_nullable => 0 },
32  "mac",
33  { data_type => "macaddr", is_nullable => 1 },
34  "dns",
35  { data_type => "text", is_nullable => 1 },
36  "active",
37  { data_type => "boolean", is_nullable => 1 },
38  "time_first",
39  {
40    data_type     => "timestamp",
41    is_nullable   => 1,
42  },
43  "time_last",
44  {
45    data_type     => "timestamp",
46    is_nullable   => 1,
47  },
48);
49
501;
51