diff options
-rw-r--r-- | config-db/ODLX/ConfigDB.pm | 37 | ||||
-rw-r--r-- | config-db/ODLX/MetaDB/DBI.pm | 78 |
2 files changed, 113 insertions, 2 deletions
diff --git a/config-db/ODLX/ConfigDB.pm b/config-db/ODLX/ConfigDB.pm index 6bf8ab86..93ef14be 100644 --- a/config-db/ODLX/ConfigDB.pm +++ b/config-db/ODLX/ConfigDB.pm @@ -232,6 +232,43 @@ sub fetchAllClientIDsOfGroup return $confDB->{'meta-db'}->fetchAllClientIDsOfGroup($groupID); } +sub fetchGroupsByFilter +{ + my $confDB = shift; + my $filter = shift; + my $resultCols = shift; + + my @groups + = $confDB->{'meta-db'}->fetchGroupsByFilter($filter, $resultCols); + return wantarray() ? @groups : shift @groups; +} + +sub fetchGroupsById +{ + my $confDB = shift; + my $id = shift; + + my $filter = { 'id' => $id }; + my @groups = $confDB->{'meta-db'}->fetchGroupsByFilter($filter); + return wantarray() ? @groups : shift @groups; +} + +sub fetchAllGroupIDsOfSystem +{ + my $confDB = shift; + my $systemID = shift; + + return $confDB->{'meta-db'}->fetchAllGroupIDsOfSystem($systemID); +} + +sub fetchAllGroupIDsOfClient +{ + my $confDB = shift; + my $clientID = shift; + + return $confDB->{'meta-db'}->fetchAllGroupIDsOfClient($clientID); +} + ################################################################################ ### data manipulation interface ################################################################################ diff --git a/config-db/ODLX/MetaDB/DBI.pm b/config-db/ODLX/MetaDB/DBI.pm index 9a654744..50c7ecf5 100644 --- a/config-db/ODLX/MetaDB/DBI.pm +++ b/config-db/ODLX/MetaDB/DBI.pm @@ -114,6 +114,18 @@ sub fetchAllSystemIDsOfClient return @rows; } +sub fetchAllSystemIDsOfGroup +{ + my $self = shift; + my $groupID = shift; + + my $sql = qq[ + SELECT system_id FROM group_system_ref WHERE group_id = '$groupID' + ]; + my @rows = $self->_doSelect($sql, 'system_id'); + return @rows; +} + sub fetchClientsByFilter { my $self = shift; @@ -143,15 +155,77 @@ sub fetchClientsById sub fetchAllClientIDsOfSystem { my $self = shift; - my $clientID = shift; + my $systemID = shift; my $sql = qq[ - SELECT client_id FROM client_system_ref WHERE system_id = '$clientID' + SELECT client_id FROM client_system_ref WHERE system_id = '$systemID' ]; my @rows = $self->_doSelect($sql, 'system_id'); return @rows; } +sub fetchAllClientIDsOfGroup +{ + my $self = shift; + my $groupID = shift; + + my $sql = qq[ + SELECT client_id FROM group_client_ref WHERE group_id = '$groupID' + ]; + my @rows = $self->_doSelect($sql, 'system_id'); + return @rows; +} + +sub fetchGroupsByFilter +{ + my $self = shift; + my $filter = shift; + my $resultCols = shift; + + $resultCols = '*' unless (defined $resultCols); + my $sql = "SELECT $resultCols FROM group"; + my $connector; + foreach my $col (keys %$filter) { + $connector = !defined $connector ? 'WHERE' : 'AND'; + $sql .= " $connector $col = '$filter->{$col}'"; + } + my @rows = $self->_doSelect($sql); + return @rows; +} + +sub fetchGroupsById +{ + my $self = shift; + my $id = shift; + my $resultCols = shift; + + return $self->fetchGroupsByFilter({'id' => $id}, $resultCols); +} + +sub fetchAllGroupIDsOfSystem +{ + my $self = shift; + my $systemID = shift; + + my $sql = qq[ + SELECT group_id FROM group_system_ref WHERE system_id = '$systemID' + ]; + my @rows = $self->_doSelect($sql, 'group_id'); + return @rows; +} + +sub fetchAllGroupIDsOfClient +{ + my $self = shift; + my $clientID = shift; + + my $sql = qq[ + SELECT group_id FROM group_client_ref WHERE client_id = '$clientID' + ]; + my @rows = $self->_doSelect($sql, 'group_id'); + return @rows; +} + ################################################################################ ### data manipulation functions ################################################################################ |