1package Magus::Category;
2#
3# Copyright (c) 2007,2008 Chris Reinhardt. All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are
7# met:
8#
9# 1. Redistributions of source code must retain the above copyright notice
10#    this list of conditions and the following disclaimer.
11#
12# 2. Redistributions in binary form must reproduce the above copyright
13#    notice, this list of conditions and the following disclaimer in the
14#    documentation and/or other materials provided with the distribution.
15#
16# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
17# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
18# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26#
27
28#
29# MAINTAINER=   ctriv@MidnightBSD.org
30#
31
32use strict;
33use warnings;
34use base qw(Magus::DBI);
35
36
37__PACKAGE__->table('categories');
38__PACKAGE__->columns(Essential => qw/id category/);
39__PACKAGE__->has_many(ports => [ 'Magus::PortCategory' => 'port']);
40
41
42=head2 $cat->distinct_ports
43
44Returns an arrayref of port names.  These are the distinct ports
45belonging to this cateogory, without duplicates.
46
47=cut
48sub distinct_ports {
49  my ($self) = @_;
50
51  my $dbh = $self->db_Main;
52
53  return $dbh->selectcol_arrayref(
54    "SELECT DISTINCT(ports.name) FROM ports,port_categories pc WHERE ports.id=pc.port AND pc.category=?",
55    undef,
56    $self->id
57  );
58}
59
60
61
621;
63__END__
64
65