neiam
/apollos_crib
It's Apollo's Crib
public · Issues · Pulls 1 · Labels · Forks · Compare · Actions failure · Badges · Packages
Log in to mark this repository.
start of a reusable search component, and a mix fmt
ff34b00 · gmorell · 2023-06-21 04:46
Files changed
modified
apps/room_air_quality/lib/room_air_quality/aqi_worker.ex
+192
−192
| 51 | 51 | end |
| 52 | 52 | |
| 53 | 53 | defp intify(val) when val == "", do: nil |
| 54 | − defp intify(val) when is_binary(val), do: val |> String.to_integer | |
| 55 | − defp intify(val) when is_float(val), do: val |> Kernel.trunc | |
| 54 | + defp intify(val) when is_binary(val), do: val |> String.to_integer() | |
| 55 | + defp intify(val) when is_float(val), do: val |> Kernel.trunc() | |
| 56 | 56 | defp intify(val), do: val |
| 57 | 57 | |
| 58 | 58 | defp write_data(result, type, id) do |
| 61 | 61 | |
| 62 | 62 | case type do |
| 63 | 63 | :hourly -> |
| 64 | − result.body | |
| 65 | − |> String.split("\r\n") | |
| 66 | − |> Enum.filter(fn x -> x != "" end) | |
| 67 | − |> CSV.decode( | |
| 68 | − headers: [ | |
| 69 | − :valid_date, | |
| 70 | − :valid_time, | |
| 71 | − :aqsid, | |
| 72 | − :site_name, | |
| 73 | − :gmt_offset, | |
| 74 | − :parameter_name, | |
| 75 | − :reporting_units, | |
| 76 | − :value, | |
| 77 | − :data_source | |
| 78 | − ], | |
| 79 | − separator: ?| | |
| 64 | + result.body | |
| 65 | + |> String.split("\r\n") | |
| 66 | + |> Enum.filter(fn x -> x != "" end) | |
| 67 | + |> CSV.decode( | |
| 68 | + headers: [ | |
| 69 | + :valid_date, | |
| 70 | + :valid_time, | |
| 71 | + :aqsid, | |
| 72 | + :site_name, | |
| 73 | + :gmt_offset, | |
| 74 | + :parameter_name, | |
| 75 | + :reporting_units, | |
| 76 | + :value, | |
| 77 | + :data_source | |
| 78 | + ], | |
| 79 | + separator: ?| | |
| 80 | + ) | |
| 81 | + |> Stream.map(fn {:ok, data} -> | |
| 82 | + RoomSanctum.Storage.change_hourly_data( | |
| 83 | + %RoomSanctum.Storage.AirNow.HourlyData{}, | |
| 84 | + data | |
| 85 | + |> Map.put(:source_id, id) | |
| 86 | + |> Map.put(:valid_date, data.valid_date |> Timex.parse!("%m/%d/%y", :strftime)) | |
| 80 | 87 | ) |
| 81 | − |> Stream.map(fn {:ok, data} -> | |
| 82 | − RoomSanctum.Storage.change_hourly_data( | |
| 83 | − %RoomSanctum.Storage.AirNow.HourlyData{}, | |
| 84 | − data | |
| 85 | − |> Map.put(:source_id, id) | |
| 86 | − |> Map.put(:valid_date, data.valid_date |> Timex.parse!("%m/%d/%y", :strftime)) | |
| 87 | − ) | |
| 88 | − |> Map.put(:inserted_at, datetime) | |
| 89 | − |> Map.put(:updated_at, datetime) | |
| 90 | − end) | |
| 91 | − |> Stream.map(fn x -> | |
| 92 | − Repo.insert( | |
| 93 | − x, | |
| 94 | − on_conflict: {:replace_all_except, [:id]}, | |
| 95 | − conflict_target: [:source_id, :site_name, :parameter_name] | |
| 96 | − ) | |
| 97 | − end) | |
| 98 | − |> Enum.to_list() | |
| 88 | + |> Map.put(:inserted_at, datetime) | |
| 89 | + |> Map.put(:updated_at, datetime) | |
| 90 | + end) | |
| 91 | + |> Stream.map(fn x -> | |
| 92 | + Repo.insert( | |
| 93 | + x, | |
| 94 | + on_conflict: {:replace_all_except, [:id]}, | |
| 95 | + conflict_target: [:source_id, :site_name, :parameter_name] | |
| 96 | + ) | |
| 97 | + end) | |
| 98 | + |> Enum.to_list() | |
| 99 | 99 | |
| 100 | 100 | :sites -> |
| 101 | − result.body | |
| 102 | − |> String.split("\r\n") | |
| 103 | − |> List.delete_at(0) | |
| 104 | − |> Enum.filter(fn x -> x != "" end) | |
| 105 | − |> CSV.decode( | |
| 106 | − headers: [ | |
| 107 | − :station_id, | |
| 108 | − :aqsid, | |
| 109 | − :full_aqsid, | |
| 110 | − :parameter, | |
| 111 | − :monitor_type, | |
| 112 | − :site_code, | |
| 113 | − :site_name, | |
| 114 | − :status, | |
| 115 | − :agency_id, | |
| 116 | − :agency_name, | |
| 117 | − :epa_region, | |
| 118 | − :latitude, | |
| 119 | − :longitude, | |
| 120 | − :elevation, | |
| 121 | − :gmt_offset, | |
| 122 | − :country_fips, | |
| 123 | − :cbsa_id, | |
| 124 | − :cbsa_name, | |
| 125 | − :state_aqs_code, | |
| 126 | − :state_abbreviation, | |
| 127 | − :county_aqs_code, | |
| 128 | − :county_name | |
| 129 | − ], | |
| 130 | − separator: ?| | |
| 101 | + result.body | |
| 102 | + |> String.split("\r\n") | |
| 103 | + |> List.delete_at(0) | |
| 104 | + |> Enum.filter(fn x -> x != "" end) | |
| 105 | + |> CSV.decode( | |
| 106 | + headers: [ | |
| 107 | + :station_id, | |
| 108 | + :aqsid, | |
| 109 | + :full_aqsid, | |
| 110 | + :parameter, | |
| 111 | + :monitor_type, | |
| 112 | + :site_code, | |
| 113 | + :site_name, | |
| 114 | + :status, | |
| 115 | + :agency_id, | |
| 116 | + :agency_name, | |
| 117 | + :epa_region, | |
| 118 | + :latitude, | |
| 119 | + :longitude, | |
| 120 | + :elevation, | |
| 121 | + :gmt_offset, | |
| 122 | + :country_fips, | |
| 123 | + :cbsa_id, | |
| 124 | + :cbsa_name, | |
| 125 | + :state_aqs_code, | |
| 126 | + :state_abbreviation, | |
| 127 | + :county_aqs_code, | |
| 128 | + :county_name | |
| 129 | + ], | |
| 130 | + separator: ?| | |
| 131 | + ) | |
| 132 | + |> Enum.to_list() | |
| 133 | + |> Enum.map(fn {:ok, x} -> x end) | |
| 134 | + |> Enum.group_by(fn x -> x.aqsid end) | |
| 135 | + |> Enum.map(fn {_k, v} -> | |
| 136 | + p = v |> Enum.map(fn q -> q.parameter end) | |
| 137 | + f = v |> List.first() | |
| 138 | + f |> Map.put(:parameters, p) | |
| 139 | + end) | |
| 140 | + |> Enum.map(fn data -> | |
| 141 | + point = %Geo.Point{ | |
| 142 | + coordinates: | |
| 143 | + {data.latitude |> String.to_float(), data.longitude |> String.to_float()}, | |
| 144 | + srid: 4326 | |
| 145 | + } | |
| 146 | + | |
| 147 | + RoomSanctum.Storage.change_monitoring_site( | |
| 148 | + %RoomSanctum.Storage.AirNow.MonitoringSite{}, | |
| 149 | + data | |
| 150 | + |> Map.put(:source_id, id) | |
| 151 | + |> Map.put(:point, point) | |
| 152 | + |> Map.put(:gmt_offset, data.gmt_offset |> String.to_float() |> Kernel.trunc()) | |
| 131 | 153 | ) |
| 132 | − |> Enum.to_list() | |
| 133 | − |> Enum.map(fn {:ok, x} -> x end) | |
| 134 | − |> Enum.group_by(fn x -> x.aqsid end) | |
| 135 | − |> Enum.map(fn {_k, v} -> | |
| 136 | − p = v |> Enum.map(fn q -> q.parameter end) | |
| 137 | − f = v |> List.first() | |
| 138 | − f |> Map.put(:parameters, p) | |
| 139 | − end) | |
| 140 | − |> Enum.map(fn data -> | |
| 141 | − point = %Geo.Point{ | |
| 142 | − coordinates: | |
| 143 | − {data.latitude |> String.to_float(), data.longitude |> String.to_float()}, | |
| 144 | − srid: 4326 | |
| 145 | − } | |
| 146 | − | |
| 147 | − RoomSanctum.Storage.change_monitoring_site( | |
| 148 | − %RoomSanctum.Storage.AirNow.MonitoringSite{}, | |
| 149 | − data | |
| 150 | − |> Map.put(:source_id, id) | |
| 151 | − |> Map.put(:point, point) | |
| 152 | − |> Map.put(:gmt_offset, data.gmt_offset |> String.to_float() |> Kernel.trunc()) | |
| 153 | − ) | |
| 154 | − |> Map.put(:inserted_at, datetime) | |
| 155 | − |> Map.put(:updated_at, datetime) | |
| 156 | − end) | |
| 157 | − |> Enum.map(fn x -> | |
| 158 | − Repo.insert( | |
| 159 | − x, | |
| 160 | − on_conflict: {:replace_all_except, [:id]}, | |
| 161 | − conflict_target: [:source_id, :station_id] | |
| 162 | − ) | |
| 163 | − end) | |
| 154 | + |> Map.put(:inserted_at, datetime) | |
| 155 | + |> Map.put(:updated_at, datetime) | |
| 156 | + end) | |
| 157 | + |> Enum.map(fn x -> | |
| 158 | + Repo.insert( | |
| 159 | + x, | |
| 160 | + on_conflict: {:replace_all_except, [:id]}, | |
| 161 | + conflict_target: [:source_id, :station_id] | |
| 162 | + ) | |
| 163 | + end) | |
| 164 | 164 | |
| 165 | 165 | :hourly_obs -> |
| 166 | − result.body | |
| 167 | − |> String.split("\r\n") | |
| 168 | − |> List.delete_at(0) | |
| 169 | − |> Enum.filter(fn x -> x != "" end) | |
| 170 | − |> CSV.decode( | |
| 171 | − headers: [ | |
| 172 | − :aqsid, | |
| 173 | − :site_name, | |
| 174 | − :status, | |
| 175 | − :epa_region, | |
| 176 | − :lat, | |
| 177 | − :lon, | |
| 178 | − :elevation, | |
| 179 | − :gmt_offset, | |
| 180 | − :country_code, | |
| 181 | − :state_name, | |
| 182 | − :valid_date, | |
| 183 | − :valid_time, | |
| 184 | − :data_source, | |
| 166 | + result.body | |
| 167 | + |> String.split("\r\n") | |
| 168 | + |> List.delete_at(0) | |
| 169 | + |> Enum.filter(fn x -> x != "" end) | |
| 170 | + |> CSV.decode( | |
| 171 | + headers: [ | |
| 172 | + :aqsid, | |
| 173 | + :site_name, | |
| 174 | + :status, | |
| 175 | + :epa_region, | |
| 176 | + :lat, | |
| 177 | + :lon, | |
| 178 | + :elevation, | |
| 179 | + :gmt_offset, | |
| 180 | + :country_code, | |
| 181 | + :state_name, | |
| 182 | + :valid_date, | |
| 183 | + :valid_time, | |
| 184 | + :data_source, | |
| 185 | + :reporting_areas, | |
| 186 | + :ozone_aqi, | |
| 187 | + :pm10_aqi, | |
| 188 | + :pm25_aqi, | |
| 189 | + :no2_aqi, | |
| 190 | + :ozone_measured, | |
| 191 | + :pm10_measured, | |
| 192 | + :pm25_measured, | |
| 193 | + :no2_measured, | |
| 194 | + :no2, | |
| 195 | + :no2_unit, | |
| 196 | + :co, | |
| 197 | + :co_unit, | |
| 198 | + :pm25, | |
| 199 | + :pm25_unit, | |
| 200 | + :so2, | |
| 201 | + :so2_unit, | |
| 202 | + :ozone, | |
| 203 | + :ozone_unit, | |
| 204 | + :pm10, | |
| 205 | + :pm10_unit | |
| 206 | + ] | |
| 207 | + ) | |
| 208 | + |> Enum.to_list() | |
| 209 | + |> Enum.map(fn {:ok, x} -> x end) | |
| 210 | + |> Enum.map(fn data -> | |
| 211 | + point = %Geo.Point{ | |
| 212 | + coordinates: {data.lat |> String.to_float(), data.lon |> String.to_float()}, | |
| 213 | + srid: 4326 | |
| 214 | + } | |
| 215 | + | |
| 216 | + {offset, _} = data.gmt_offset |> Float.parse() | |
| 217 | + | |
| 218 | + RoomSanctum.Storage.change_hourly_obs_data( | |
| 219 | + %RoomSanctum.Storage.AirNow.HourlyObsData{}, | |
| 220 | + data | |
| 221 | + |> Map.put(:source_id, id) | |
| 222 | + |> Map.put(:point, point) | |
| 223 | + |> Map.put(:gmt_offset, offset) | |
| 224 | + |> Map.put( | |
| 185 | 225 | :reporting_areas, |
| 186 | − :ozone_aqi, | |
| 187 | − :pm10_aqi, | |
| 188 | − :pm25_aqi, | |
| 189 | − :no2_aqi, | |
| 190 | − :ozone_measured, | |
| 191 | − :pm10_measured, | |
| 192 | − :pm25_measured, | |
| 193 | − :no2_measured, | |
| 194 | − :no2, | |
| 195 | − :no2_unit, | |
| 196 | − :co, | |
| 197 | − :co_unit, | |
| 198 | − :pm25, | |
| 199 | − :pm25_unit, | |
| 200 | − :so2, | |
| 201 | − :so2_unit, | |
| 202 | − :ozone, | |
| 203 | − :ozone_unit, | |
| 204 | − :pm10, | |
| 205 | − :pm10_unit | |
| 206 | − ] | |
| 207 | − ) | |
| 208 | − |> Enum.to_list() | |
| 209 | − |> Enum.map(fn {:ok, x} -> x end) | |
| 210 | − |> Enum.map(fn data -> | |
| 211 | − point = %Geo.Point{ | |
| 212 | − coordinates: {data.lat |> String.to_float(), data.lon |> String.to_float()}, | |
| 213 | − srid: 4326 | |
| 214 | − } | |
| 215 | − | |
| 216 | − {offset, _} = data.gmt_offset |> Float.parse() | |
| 217 | − | |
| 218 | − RoomSanctum.Storage.change_hourly_obs_data( | |
| 219 | − %RoomSanctum.Storage.AirNow.HourlyObsData{}, | |
| 220 | − data | |
| 221 | − |> Map.put(:source_id, id) | |
| 222 | − |> Map.put(:point, point) | |
| 223 | − |> Map.put(:gmt_offset, offset) | |
| 224 | − |> Map.put( | |
| 225 | − :reporting_areas, | |
| 226 | − data |> Map.get(:reporting_areas, "") |> String.split("|") | |
| 227 | − ) | |
| 228 | − |> Map.put( | |
| 229 | − :valid_date, | |
| 230 | − data.valid_date |> Timex.parse!("%m/%d/%Y", :strftime) |> NaiveDateTime.to_date() | |
| 231 | − ) | |
| 232 | − |> Map.put( | |
| 233 | − :valid_time, | |
| 234 | − data.valid_time |> Timex.parse!("%H:%M", :strftime) |> NaiveDateTime.to_time() | |
| 235 | − ) | |
| 226 | + data |> Map.get(:reporting_areas, "") |> String.split("|") | |
| 236 | 227 | ) |
| 237 | − |> Map.put(:inserted_at, datetime) | |
| 238 | − |> Map.put(:updated_at, datetime) | |
| 239 | − | |
| 240 | − |> Map.put(:ozone_aqi, data.ozone_aqi |> intify) | |
| 241 | − |> Map.put(:pm10_aqi, data.pm10_aqi |> intify) | |
| 242 | − |> Map.put(:pm25_aqi, data.pm25_aqi |> intify) | |
| 243 | − |> Map.put(:no2_aqi, data.no2_aqi |> intify) | |
| 244 | − | |
| 245 | − end) | |
| 246 | − |> Enum.map(fn x -> | |
| 247 | − Repo.insert( | |
| 248 | − x, | |
| 249 | − on_conflict: {:replace_all_except, [:id]}, | |
| 250 | − conflict_target: [:source_id, :aqsid] | |
| 228 | + |> Map.put( | |
| 229 | + :valid_date, | |
| 230 | + data.valid_date |> Timex.parse!("%m/%d/%Y", :strftime) |> NaiveDateTime.to_date() | |
| 251 | 231 | ) |
| 252 | − end) | |
| 232 | + |> Map.put( | |
| 233 | + :valid_time, | |
| 234 | + data.valid_time |> Timex.parse!("%H:%M", :strftime) |> NaiveDateTime.to_time() | |
| 235 | + ) | |
| 236 | + ) | |
| 237 | + |> Map.put(:inserted_at, datetime) | |
| 238 | + |> Map.put(:updated_at, datetime) | |
| 239 | + |> Map.put(:ozone_aqi, data.ozone_aqi |> intify) | |
| 240 | + |> Map.put(:pm10_aqi, data.pm10_aqi |> intify) | |
| 241 | + |> Map.put(:pm25_aqi, data.pm25_aqi |> intify) | |
| 242 | + |> Map.put(:no2_aqi, data.no2_aqi |> intify) | |
| 243 | + end) | |
| 244 | + |> Enum.map(fn x -> | |
| 245 | + Repo.insert( | |
| 246 | + x, | |
| 247 | + on_conflict: {:replace_all_except, [:id]}, | |
| 248 | + conflict_target: [:source_id, :aqsid] | |
| 249 | + ) | |
| 250 | + end) | |
| 253 | 251 | end |
| 252 | + | |
| 254 | 253 | Logger.info("AQI::#{id} completed writing bundle") |
| 255 | 254 | end |
| 256 | 255 | |
| 257 | −# defp build_todays_url(ts \\ DateTime.utc_now()) do | |
| 258 | −# sh = | |
| 259 | −# ts | |
| 260 | −# |> DateTime.add(-1 * 60 * 60, :second) | |
| 261 | −# | |
| 262 | −# file_str = sh |> Timex.format!("%Y%m%d%H", :strftime) | |
| 263 | −# | |
| 264 | −# "https://s3-us-west-1.amazonaws.com//files.airnowtech.org/airnow/today/HourlyData_#{file_str}.dat" | |
| 265 | −# end | |
| 256 | + # defp build_todays_url(ts \\ DateTime.utc_now()) do | |
| 257 | + # sh = | |
| 258 | + # ts | |
| 259 | + # |> DateTime.add(-1 * 60 * 60, :second) | |
| 260 | + # | |
| 261 | + # file_str = sh |> Timex.format!("%Y%m%d%H", :strftime) | |
| 262 | + # | |
| 263 | + # "https://s3-us-west-1.amazonaws.com//files.airnowtech.org/airnow/today/HourlyData_#{file_str}.dat" | |
| 264 | + # end | |
| 266 | 265 | |
| 267 | 266 | defp build_obs_url(ts \\ DateTime.utc_now()) do |
| 268 | 267 | sh = ts |> DateTime.add(-2 * 60 * 60, :second) |
| 269 | 268 | file_str = sh |> Timex.format!("%Y%m%d%H", :strftime) |
| 270 | 269 | date_str = sh |> Timex.format!("%Y%m%d", :strftime) |
| 271 | 270 | |
| 272 | − "https://s3-us-west-1.amazonaws.com//files.airnowtech.org/airnow/#{sh.year}/#{date_str}/HourlyAQObs_#{file_str}.dat" |> IO.inspect | |
| 271 | + "https://s3-us-west-1.amazonaws.com//files.airnowtech.org/airnow/#{sh.year}/#{date_str}/HourlyAQObs_#{file_str}.dat" | |
| 272 | + |> IO.inspect() | |
| 273 | 273 | end |
| 274 | 274 | |
| 275 | 275 | def handle_cast(:refresh_db_cfg, state) do |
modified
apps/room_calendar/lib/room_calendar/calendar_worker.ex
+8
−1
| 61 | 61 | |
| 62 | 62 | data = |
| 63 | 63 | entries |
| 64 | − |> Enum.map(fn x -> %{blob: x |> Map.from_struct(), source_id: state.id |> intify, date_start: x.dtstart, date_end: x.dtend} end) | |
| 64 | + |> Enum.map(fn x -> | |
| 65 | + %{ | |
| 66 | + blob: x |> Map.from_struct(), | |
| 67 | + source_id: state.id |> intify, | |
| 68 | + date_start: x.dtstart, | |
| 69 | + date_end: x.dtend | |
| 70 | + } | |
| 71 | + end) | |
| 65 | 72 | |> Enum.map(fn x -> |
| 66 | 73 | RoomSanctum.Storage.change_icalendar(%RoomSanctum.Storage.ICalendar{}, x).changes |
| 67 | 74 | |> Map.put(:inserted_at, dt) |
modified
apps/room_calendar/mix.exs
+0
−1
Click to load diff…
modified
apps/room_cronos/lib/room_cronos/cronos_worker.ex
+11
−10
Click to load diff…
modified
apps/room_ephem/lib/room_ephem/ephem_worker.ex
+2
−3
Click to load diff…
modified
apps/room_ephem/mix.exs
+0
−3
Click to load diff…
modified
apps/room_gtfs/lib/gtfs-realtime.pb.ex
+134
−126
Click to load diff…
modified
apps/room_gtfs/lib/room_gtfs/gtfs_worker.ex
+1
−2
Click to load diff…
modified
apps/room_hermes/config/config.exs
+2
−3
Click to load diff…
modified
apps/room_hermes/config/dev.exs
+2
−2
Click to load diff…
modified
apps/room_hermes/config/prod.exs
+1
−1
Click to load diff…
modified
apps/room_hermes/config/runtime.exs
+1
−1
Click to load diff…
modified
apps/room_hermes/lib/room_hermes.ex
+4
−4
Click to load diff…
modified
apps/room_hermes/lib/room_hermes/accounts.ex
+4
−3
Click to load diff…
modified
apps/room_hermes/lib/room_hermes/accounts/rabbit_user.ex
+4
−4
Click to load diff…
modified
apps/room_hermes/lib/room_hermes/repo.ex
+2
−2
Click to load diff…
modified
apps/room_hermes/lib/room_hermes_web.ex
+7
−7
Click to load diff…
modified
apps/room_hermes/lib/room_hermes_web/controllers/rabbit_user_controller.ex
+2
−1
Click to load diff…
modified
apps/room_hermes/lib/room_hermes_web/controllers/resource_controller.ex
+0
−1
Click to load diff…
modified
apps/room_hermes/lib/room_hermes_web/controllers/user_controller.ex
+4
−2
Click to load diff…
modified
apps/room_hermes/lib/room_hermes_web/controllers/vhost_controller.ex
+1
−1
Click to load diff…
modified
apps/room_hermes/lib/room_hermes_web/endpoint.ex
+11
−11
Click to load diff…
modified
apps/room_hermes/lib/room_hermes_web/router.ex
+1
−0
Click to load diff…
modified
apps/room_hermes/mix.exs
+3
−3
Click to load diff…
modified
apps/room_hermes/test/room_hermes/accounts_test.exs
+7
−2
Click to load diff…
modified
apps/room_hermes/test/room_hermes_web/controllers/rabbit_user_controller_test.exs
+10
−3
Click to load diff…
modified
apps/room_hermes/test/support/fixtures/accounts_fixtures.ex
+4
−6
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/accounts.ex
+3
−2
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/condensers/basic_mqtt.ex
+63
−30
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/configuration.ex
+11
−11
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/configuration/configs/aqi.ex
+1
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/configuration/configs/cronos.ex
+1
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/configuration/pythiae.ex
+0
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/configuration/queries/rideshare.ex
+1
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/configuration/source.ex
+12
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/storage.ex
+215
−162
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/storage/air_now/hourly_obs_data.ex
+34
−21
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/workers/ankyra_worker.ex
+26
−22
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/workers/pythiae_worker.ex
+26
−17
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum/workers/vision_worker.ex
+47
−40
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web.ex
+22
−10
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/components/core_components.ex
+4
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/components/layouts.ex
+1
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/controllers/user_auth.ex
+1
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/endpoint.ex
+1
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/icon_helpers.ex
+19
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/aqi_reporting_area_live/index.ex
+4
−2
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_ankyra/form_component.ex
+28
−12
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_foci_live/form_component.ex
+7
−2
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_pythiae_live/form_component.ex
+23
−21
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_pythiae_live/public.ex
+19
−10
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_pythiae_live/show.ex
+33
−25
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_query_live/form_component.ex
+34
−2
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_query_live/form_component.html.heex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_query_live/show.ex
+3
−4
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_source_live/form_component.ex
+9
−5
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_source_live/show.ex
+24
−16
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_vision_live/form_component.ex
+58
−36
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/cfg_vision_live/show.ex
+18
−10
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gbfs_alert_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gbfs_station_info_live/form_component.ex
+1
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gbfs_station_status_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gbfs_sys_info_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gtfs_agency_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gtfs_calendar_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gtfs_calendar_live/index.ex
+0
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gtfs_direction_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gtfs_route_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gtfs_stop_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gtfs_stop_time_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/gtfs_trip_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/hourly_data_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/hourly_obs_data_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/hourly_obs_data_live/index.ex
+4
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/landing_live/index.ex
+31
−17
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/live_auth.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/live_helpers.ex
+63
−60
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/live_preview.ex
+15
−14
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/monitoring_site_live/form_component.ex
+2
−0
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/live/monitoring_site_live/index.ex
+4
−1
Click to load diff…
modified
apps/room_sanctum/lib/room_sanctum_web/router.ex
+2
−4
Click to load diff…
modified
apps/room_sanctum/mix.exs
+3
−4
Click to load diff…
modified
apps/room_sanctum/priv/repo/migrations/20220606035410_create_gbfs_station_information.exs
+1
−0
Click to load diff…
added
apps/room_sanctum/priv/repo/migrations/20230620023840_storage_fts.exs
+56
−0
Click to load diff…
modified
apps/room_sanctum/test/room_sanctum/configuration_test.exs
+21
−3
Click to load diff…
modified
apps/room_sanctum/test/room_sanctum_web/live/source_live_test.exs
+7
−1
Click to load diff…
modified
apps/room_tidal/mix.exs
+0
−2
Click to load diff…
modified
apps/room_weather/lib/room_weather/weather_worker.ex
+4
−2
Click to load diff…
modified
apps/room_weather/mix.exs
+0
−2
Click to load diff…
modified
config/config.exs
+16
−16
Click to load diff…
modified
config/dev.exs
+10
−10
Click to load diff…
modified
config/prod.exs
+12
−15
Click to load diff…
modified
config/runtime.exs
+22
−22
Click to load diff…
modified
config/test.exs
+6
−6
Click to load diff…
modified
docker-compose.yml
+1
−1
Click to load diff…
modified
mix.exs
+6
−8
Click to load diff…
Parents: 9be8a61