|
72 | 72 | Install::linkSourceZone($source_id, $zone_id); |
73 | 73 |
|
74 | 74 | // Insert into the database |
75 | | - $success = $DB->insert($table, [ |
| 75 | + $row_exists = (new DbUtils())->countElementsInTable($table, [ |
76 | 76 | 'date' => "$year-01-01 00:00:00", |
77 | 77 | 'plugin_carbon_carbonintensitysources_id' => $source_id, |
78 | | - 'plugin_carbon_zones_id' => $zone_id, |
79 | | - 'intensity' => $intensity, |
80 | | - 'data_quality' => 2 // constant GlpiPlugin\Carbon\DataTracking::DATA_QUALITY_ESTIMATED |
| 78 | + 'plugin_carbon_zones_id' => $zone_id |
81 | 79 | ]); |
| 80 | + if (!$row_exists) { |
| 81 | + $success = $DB->insert($table, [ |
| 82 | + 'date' => "$year-01-01 00:00:00", |
| 83 | + 'plugin_carbon_carbonintensitysources_id' => $source_id, |
| 84 | + 'plugin_carbon_zones_id' => $zone_id, |
| 85 | + 'intensity' => $intensity, |
| 86 | + 'data_quality' => 2 // constant GlpiPlugin\Carbon\DataTracking::DATA_QUALITY_ESTIMATED |
| 87 | + ]); |
| 88 | + } else { |
| 89 | + $success = $DB->update($table, [ |
| 90 | + 'intensity' => $intensity, |
| 91 | + 'data_quality' => 2 // constant GlpiPlugin\Carbon\DataTracking::DATA_QUALITY_ESTIMATED |
| 92 | + ], [ |
| 93 | + 'date' => "$year-01-01 00:00:00", |
| 94 | + 'plugin_carbon_carbonintensitysources_id' => $source_id, |
| 95 | + 'plugin_carbon_zones_id' => $zone_id |
| 96 | + ]); |
| 97 | + } |
82 | 98 |
|
83 | 99 | if (!$success) { |
84 | 100 | throw new \RuntimeException("Failed to insert data for year $year"); |
|
92 | 108 |
|
93 | 109 | $quebec_carbon_intensity = include(dirname(__DIR__) . '/data/carbon_intensity/quebec.php'); |
94 | 110 | foreach ($quebec_carbon_intensity as $year => $intensity) { |
95 | | - $success = $DB->insert($table, [ |
| 111 | + $row_exists = (new DbUtils())->countElementsInTable($table, [ |
96 | 112 | 'date' => "$year-01-01 00:00:00", |
97 | 113 | 'plugin_carbon_carbonintensitysources_id' => $source_id, |
98 | 114 | 'plugin_carbon_zones_id' => $zone_id_quebec, |
99 | | - 'intensity' => $intensity, |
100 | | - 'data_quality' => 2 // constant GlpiPlugin\Carbon\DataTracking::DATA_QUALITY_ESTIMATED |
101 | 115 | ]); |
| 116 | + if (!$row_exists) { |
| 117 | + $success = $DB->insert($table, [ |
| 118 | + 'date' => "$year-01-01 00:00:00", |
| 119 | + 'plugin_carbon_carbonintensitysources_id' => $source_id, |
| 120 | + 'plugin_carbon_zones_id' => $zone_id_quebec, |
| 121 | + 'intensity' => $intensity, |
| 122 | + 'data_quality' => 2 // constant GlpiPlugin\Carbon\DataTracking::DATA_QUALITY_ESTIMATED |
| 123 | + ]); |
| 124 | + } else { |
| 125 | + $success = $DB->update($table, [ |
| 126 | + 'intensity' => $intensity, |
| 127 | + 'data_quality' => 2 // constant GlpiPlugin\Carbon\DataTracking::DATA_QUALITY_ESTIMATED |
| 128 | + ], [ |
| 129 | + 'date' => "$year-01-01 00:00:00", |
| 130 | + 'plugin_carbon_carbonintensitysources_id' => $source_id, |
| 131 | + 'plugin_carbon_zones_id' => $zone_id |
| 132 | + ]); |
| 133 | + } |
102 | 134 | } |
0 commit comments