improved ipam
This commit is contained in:
@@ -33,10 +33,18 @@ class IpNetworkModel {
|
||||
$sqlConditions[] = " (CONCAT(INET_NTOA(network_address), '/', cidr) LIKE '%{$searchTerm}%' OR `name` LIKE '%{$searchTerm}%' OR `description` LIKE '%{$searchTerm}%') ";
|
||||
}
|
||||
|
||||
if (isset($filters['name'])) $sqlConditions[] = Helper::generateFilterCondition($filters['name'], 'name');
|
||||
if (isset($filters['description'])) $sqlConditions[] = Helper::generateFilterCondition($filters['description'], 'description');
|
||||
if (isset($filters['location'])) $sqlConditions[] = Helper::generateFilterCondition($filters['location'], 'location');
|
||||
if (isset($filters['status'])) $sqlConditions[] = Helper::generateFilterCondition($filters['status'], 'status');
|
||||
if (!empty($filters['name'])) $sqlConditions[] = Helper::generateFilterCondition($filters['name'], 'name');
|
||||
if (!empty($filters['description'])) $sqlConditions[] = Helper::generateFilterCondition($filters['description'], 'description');
|
||||
if (!empty($filters['location'])) $sqlConditions[] = Helper::generateFilterCondition($filters['location'], 'location');
|
||||
if (!empty($filters['status'])) $sqlConditions[] = Helper::generateFilterCondition($filters['status'], 'status');
|
||||
if (isset($filters['children']) && is_array($filters['children'])) {
|
||||
if (isset($filters['children']['from'])) {
|
||||
$sqlConditions[] = " (SELECT COUNT(*) FROM `IpNetwork` WHERE `parent_network_id` = main.id) >= " . intval($filters['children']['from']);
|
||||
}
|
||||
if (isset($filters['children']['to'])) {
|
||||
$sqlConditions[] = " (SELECT COUNT(*) FROM `IpNetwork` WHERE `parent_network_id` = main.id) <= " . intval($filters['children']['to']);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($filters['parent_network_id'])) {
|
||||
$sqlConditions[] = " `parent_network_id` IS NULL ";
|
||||
@@ -44,6 +52,12 @@ class IpNetworkModel {
|
||||
$sqlConditions[] = " `parent_network_id` = " . intval($filters['parent_network_id']) . " ";
|
||||
}
|
||||
|
||||
foreach ($sqlConditions as $key => $condition) {
|
||||
if (strpos($condition, ' AND ') === 0 || strpos($condition, 'AND ') === 0) {
|
||||
$sqlConditions[$key] = substr($condition, 4);
|
||||
}
|
||||
}
|
||||
|
||||
return empty($sqlConditions) ? "" : " WHERE " . implode(" AND ", $sqlConditions);
|
||||
}
|
||||
|
||||
@@ -70,7 +84,6 @@ class IpNetworkModel {
|
||||
" . $orderClause . "
|
||||
" . $limitClause;
|
||||
|
||||
|
||||
$result = $db->query($sql);
|
||||
$rows = [];
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
@@ -101,11 +114,12 @@ class IpNetworkModel {
|
||||
|
||||
public static function countIpNetworks($filters): int {
|
||||
$db = FronkDB::singleton()->link;
|
||||
$sql = "SELECT COUNT(*) as `total_rows` FROM `IpNetwork`" . self::getSqlFilter($filters);
|
||||
$sql = "SELECT COUNT(*) as `total_rows` FROM `IpNetwork` main" . self::getSqlFilter($filters);
|
||||
$result = $db->query($sql);
|
||||
return (int)$result->fetch_assoc()['total_rows'];
|
||||
}
|
||||
|
||||
|
||||
public static function findSuggestions(string $query, int $limit = 10): array {
|
||||
$db = FronkDB::singleton()->link;
|
||||
$query = $db->real_escape_string($query);
|
||||
|
||||
Reference in New Issue
Block a user