package postgres import ( "database/sql" "github.com/dustinpianalto/weather" ) type eventService struct { db *sql.DB } func (e eventService) Event(i uint64) (*weather.AmbientEntry, error) { queryString := `SELECT mac, dateutc, winddir, windspeedmph, windgustmph, windgustdir, maxdailygust, windspdmph_avg2m, winddir_avg2m, windspdmph_avg10m, winddir_avg10m, windgustmph_interval, humidity, humidity1, humidity2, humidity3, humidity4, humidity5, humidity6, humidity7, humidity8, humidity9, humidity10, humidityin, tempf, temp1f, temp2f, temp3f, temp4f, temp5f, temp6f, temp7f, temp8f, temp9f, temp10f, tempinf, hourlyrainin, dailyrainin, last24hourrainin, weeklyrainin, monthlyrainin, yearlyrainin, eventrainin, totalrainin, baromrelin, baromabsin, uv, solarradiation, co2, pm25, pm25_24h, pm25_in, pm25_in_24h, pm10_in, pm10_in_24h, co2_in, co2_in_24h, pm_in_temp, pm_in_humidity, relay1, relay2, relay3, relay4, relay5, relay6, relay7, relay8, relay9, relay10, soiltemp1, soiltemp2, soiltemp3, soiltemp4, soiltemp5, soiltemp6, soiltemp7, soiltemp8, soiltemp9, soiltemp10, soilhum1, soilhum2, soilhum3, soilhum4, soilhum5, soilhum6, soilhum7, soilhum8, soilhum9, soilhum10, leak1, leak2, leak3, leak4, lightning_time, lightning_day, lightning_distance, battout, battin, batt1, batt2, batt3, batt4, batt5, batt6, batt7, batt8, batt9, batt10, battr1, battr2, battr3, battr4, battr5, battr6, battr7, battr8, battr9, battr10, batt_25, batt_25in, batleak1, batleak2, batleak3, batleak4, batt_lightning, battsm1, battsm2, battsm3, battsm4, battrain, batt_co2, stationtype, passkey FROM events WHERE id = $1` event := weather.AmbientEntry{ ID: i, } err := e.db.QueryRow(queryString, i).Scan( &event.MAC, &event.DateUTC, &event.WindDir, &event.WindSpeedMPH, &event.WindGustMPH, &event.WindGustDir, &event.MaxDailyGust, &event.WindSpdMPH_Avg2m, &event.WindDir_Avg2m, &event.WindSpdMPH_Avg10m, &event.WindDir_Avg10m, &event.WindGustMPH_Interval, &event.Humidity, &event.Humidity1, &event.Humidity2, &event.Humidity3, &event.Humidity4, &event.Humidity5, &event.Humidity6, &event.Humidity7, &event.Humidity8, &event.Humidity9, &event.Humidity10, &event.HumidityIn, &event.TempF, &event.Temp1F, &event.Temp2F, &event.Temp3F, &event.Temp4F, &event.Temp5F, &event.Temp6F, &event.Temp7F, &event.Temp8F, &event.Temp9F, &event.Temp10F, &event.TempInF, &event.HourlyRainIn, &event.DailyRainIn, &event.Last24HourRainIn, &event.WeeklyRainIn, &event.MonthlyRainIn, &event.YearlyRainIn, &event.EventRainIn, &event.TotalRainIn, &event.BaromRelIn, &event.BaromAbsIn, &event.UV, &event.SolarRadiation, &event.CO2, &event.PM25, &event.PM25_24H, &event.PM25_In, &event.PM25_In_24H, &event.PM10_In, &event.PM10_In_24H, &event.CO2_In, &event.CO2_In_24H, &event.PM_In_Temp, &event.PM_in_Humidity, &event.Relay1, &event.Relay2, &event.Relay3, &event.Relay4, &event.Relay5, &event.Relay6, &event.Relay7, &event.Relay8, &event.Relay9, &event.Relay10, &event.SoilTemp1, &event.SoilTemp2, &event.SoilTemp3, &event.SoilTemp4, &event.SoilTemp5, &event.SoilTemp6, &event.SoilTemp7, &event.SoilTemp8, &event.SoilTemp9, &event.SoilTemp10, &event.SoilHum1, &event.SoilHum2, &event.SoilHum3, &event.SoilHum4, &event.SoilHum5, &event.SoilHum6, &event.SoilHum7, &event.SoilHum8, &event.SoilHum9, &event.SoilHum10, &event.Leak1, &event.Leak2, &event.Leak3, &event.Leak4, &event.Lightning_Time, &event.Lightning_Day, &event.Lightning_Distance, &event.BattOut, &event.BattIn, &event.Batt1, &event.Batt2, &event.Batt3, &event.Batt4, &event.Batt5, &event.Batt6, &event.Batt7, &event.Batt8, &event.Batt9, &event.Batt10, &event.BattR1, &event.BattR2, &event.BattR3, &event.BattR4, &event.BattR5, &event.BattR6, &event.BattR7, &event.BattR8, &event.BattR9, &event.BattR10, &event.Batt_25, &event.Batt_25In, &event.BatLeak1, &event.BatLeak2, &event.BatLeak3, &event.BatLeak4, &event.Batt_Lightning, &event.BattSM1, &event.BattSM2, &event.BattSM3, &event.BattSM4, &event.BattRain, &event.BattCO2, &event.StationType, &event.PASSKEY) if err != nil { return nil, err } return &event, nil } func (e eventService) AddEvent(event *weather.AmbientEntry) (*weather.AmbientEntry, error) { queryString := `INSERT INTO events (mac, dateutc, winddir, windspeedmph, windgustmph, windgustdir, maxdailygust, windspdmph_avg2m, winddir_avg2m, windspdmph_avg10m, winddir_avg10m, windgustmph_interval, humidity, humidity1, humidity2, humidity3, humidity4, humidity5, humidity6, humidity7, humidity8, humidity9, humidity10, humidityin, tempf, temp1f, temp2f, temp3f, temp4f, temp5f, temp6f, temp7f, temp8f, temp9f, temp10f, tempinf, hourlyrainin, dailyrainin, last24hourrainin, weeklyrainin, monthlyrainin, yearlyrainin, eventrainin, totalrainin, baromrelin, baromabsin, uv, solarradiation, co2, pm25, pm25_24h, pm25_in, pm25_in_24h, pm10_in, pm10_in_24h, co2_in, co2_in_24h, pm_in_temp, pm_in_humidity, relay1, relay2, relay3, relay4, relay5, relay6, relay7, relay8, relay9, relay10, soiltemp1, soiltemp2, soiltemp3, soiltemp4, soiltemp5, soiltemp6, soiltemp7, soiltemp8, soiltemp9, soiltemp10, soilhum1, soilhum2, soilhum3, soilhum4, soilhum5, soilhum6, soilhum7, soilhum8, soilhum9, soilhum10, leak1, leak2, leak3, leak4, lightning_time, lightning_day, lightning_distance, battout, battin, batt1, batt2, batt3, batt4, batt5, batt6, batt7, batt8, batt9, batt10, battr1, battr2, battr3, battr4, battr5, battr6, battr7, battr8, battr9, battr10, batt_25, batt_25in, batleak1, batleak2, batleak3, batleak4, batt_lightning, battsm1, battsm2, battsm3, battsm4, battrain, batt_co2, stationtype, passkey) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60, $61, $62, $63, $64, $65, $66, $67, $68, $69, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $100, $101, $102, $103, $104, $105, $106, $107, $108, $109, $110, $111, $112, $113, $114, $115, $116, $117, $118, $119, $120, $121, $122, $123, $124, $125, $126, $127, $128, $129, $130, $131, $132, $133) RETURNING id` err := e.db.QueryRow(queryString, event.MAC, event.DateUTC, event.WindDir, event.WindSpeedMPH, event.WindGustMPH, event.WindGustDir, event.MaxDailyGust, event.WindSpdMPH_Avg2m, event.WindDir_Avg2m, event.WindSpdMPH_Avg10m, event.WindDir_Avg10m, event.WindGustMPH_Interval, event.Humidity, event.Humidity1, event.Humidity2, event.Humidity3, event.Humidity4, event.Humidity5, event.Humidity6, event.Humidity7, event.Humidity8, event.Humidity9, event.Humidity10, event.HumidityIn, event.TempF, event.Temp1F, event.Temp2F, event.Temp3F, event.Temp4F, event.Temp5F, event.Temp6F, event.Temp7F, event.Temp8F, event.Temp9F, event.Temp10F, event.TempInF, event.HourlyRainIn, event.DailyRainIn, event.Last24HourRainIn, event.WeeklyRainIn, event.MonthlyRainIn, event.YearlyRainIn, event.EventRainIn, event.TotalRainIn, event.BaromRelIn, event.BaromAbsIn, event.UV, event.SolarRadiation, event.CO2, event.PM25, event.PM25_24H, event.PM25_In, event.PM25_In_24H, event.PM10_In, event.PM10_In_24H, event.CO2_In, event.CO2_In_24H, event.PM_In_Temp, event.PM_in_Humidity, event.Relay1, event.Relay2, event.Relay3, event.Relay4, event.Relay5, event.Relay6, event.Relay7, event.Relay8, event.Relay9, event.Relay10, event.SoilTemp1, event.SoilTemp2, event.SoilTemp3, event.SoilTemp4, event.SoilTemp5, event.SoilTemp6, event.SoilTemp7, event.SoilTemp8, event.SoilTemp9, event.SoilTemp10, event.SoilHum1, event.SoilHum2, event.SoilHum3, event.SoilHum4, event.SoilHum5, event.SoilHum6, event.SoilHum7, event.SoilHum8, event.SoilHum9, event.SoilHum10, event.Leak1, event.Leak2, event.Leak3, event.Leak4, event.Lightning_Time, event.Lightning_Day, event.Lightning_Distance, event.BattOut, event.BattIn, event.Batt1, event.Batt2, event.Batt3, event.Batt4, event.Batt5, event.Batt6, event.Batt7, event.Batt8, event.Batt9, event.Batt10, event.BattR1, event.BattR2, event.BattR3, event.BattR4, event.BattR5, event.BattR6, event.BattR7, event.BattR8, event.BattR9, event.BattR10, event.Batt_25, event.Batt_25In, event.BatLeak1, event.BatLeak2, event.BatLeak3, event.BatLeak4, event.Batt_Lightning, event.BattSM1, event.BattSM2, event.BattSM3, event.BattSM4, event.BattRain, event.BattCO2, event.StationType, event.PASSKEY).Scan(&event.ID) return event, err } func (e eventService) UpdateEvent(event *weather.AmbientEntry) error { queryString := `UPDATE events SET mac = $2, dateutc = $3, winddir = $4, windspeedmph = $5, windgustmph = $6, windgustdir = $7, maxdailygust = $8, windspdmph_avg2m = $9, winddir_avg2m = $10, windspdmph_avg10m = $11, winddir_avg10m = $12, windgustmph_interval = $13, humidity = $14, humidity1 = $15, humidity2 = $16, humidity3 = $17, humidity4 = $18, humidity5 = $19, humidity6 = $20, humidity7 = $21, humidity8 = $22, humidity9 = $23, humidity10 = $24, humidityin = $25, tempf = $26, temp1f = $27, temp2f = $28, temp3f = $29, temp4f = $30, temp5f = $31, temp6f = $32, temp7f = $33, temp8f = $34, temp9f = $35, temp10f = $36, tempinf = $37, hourlyrainin = $38, dailyrainin = $39, last24hourrainin = $40, weeklyrainin = $41, monthlyrainin = $42, yearlyrainin = $43, eventrainin = $44, totalrainin = $45, baromrelin = $46, baromabsin = $47, uv = $48, solarradiation = $49, co2 = $50, pm25 = $51, pm25_24h = $52, pm25_in = $53, pm25_in_24h = $54, pm10_in = $55, pm10_in_24h = $56, co2_in = $57, co2_in_24h = $58, pm_in_temp = $59, pm_in_humidity = $60, relay1 = $61, relay2 = $62, relay3 = $63, relay4 = $64, relay5 = $65, relay6 = $66, relay7 = $67, relay8 = $68, relay9 = $69, relay10 = $70, soiltemp1 = $71, soiltemp2 = $72, soiltemp3 = $73, soiltemp4 = $74, soiltemp5 = $75, soiltemp6 = $76, soiltemp7 = $77, soiltemp8 = $78, soiltemp9 = $79, soiltemp10 = $80, soilhum1 = $81, soilhum2 = $82, soilhum3 = $83, soilhum4 = $84, soilhum5 = $85, soilhum6 = $86, soilhum7 = $87, soilhum8 = $88, soilhum9 = $89, soilhum10 = $90, leak1 = $91, leak2 = $92, leak3 = $93, leak4 = $94, lightning_time = $95, lightning_day = $96, lightning_distance = $97, battout = $98, battin = $99, batt1 = $100, batt2 = $101, batt3 = $102, batt4 = $103, batt5 = $104, batt6 = $105, batt7 = $106, batt8 = $107, batt9 = $108, batt10 = $109, battr1 = $110, battr2 = $111, battr3 = $112, battr4 = $113, battr5 = $114, battr6 = $115, battr7 = $116, battr8 = $117, battr9 = $118, battr10 = $119, batt_25 = $120, batt_25in = $121, batleak1 = $122, batleak2 = $123, batleak3 = $124, batleak4 = $125, batt_lightning = $126, battsm1 = $127, battsm2 = $128, battsm3 = $129, battsm4 = $130, battrain = $131, batt_co2 = $132, stationtype = $133, passkey = $134, WHERE id = $1` _, err := e.db.Exec(queryString, event.ID, event.MAC, event.DateUTC, event.WindDir, event.WindSpeedMPH, event.WindGustMPH, event.WindGustDir, event.MaxDailyGust, event.WindSpdMPH_Avg2m, event.WindDir_Avg2m, event.WindSpdMPH_Avg10m, event.WindDir_Avg10m, event.WindGustMPH_Interval, event.Humidity, event.Humidity1, event.Humidity2, event.Humidity3, event.Humidity4, event.Humidity5, event.Humidity6, event.Humidity7, event.Humidity8, event.Humidity9, event.Humidity10, event.HumidityIn, event.TempF, event.Temp1F, event.Temp2F, event.Temp3F, event.Temp4F, event.Temp5F, event.Temp6F, event.Temp7F, event.Temp8F, event.Temp9F, event.Temp10F, event.TempInF, event.HourlyRainIn, event.DailyRainIn, event.Last24HourRainIn, event.WeeklyRainIn, event.MonthlyRainIn, event.YearlyRainIn, event.EventRainIn, event.TotalRainIn, event.BaromRelIn, event.BaromAbsIn, event.UV, event.SolarRadiation, event.CO2, event.PM25, event.PM25_24H, event.PM25_In, event.PM25_In_24H, event.PM10_In, event.PM10_In_24H, event.CO2_In, event.CO2_In_24H, event.PM_In_Temp, event.PM_in_Humidity, event.Relay1, event.Relay2, event.Relay3, event.Relay4, event.Relay5, event.Relay6, event.Relay7, event.Relay8, event.Relay9, event.Relay10, event.SoilTemp1, event.SoilTemp2, event.SoilTemp3, event.SoilTemp4, event.SoilTemp5, event.SoilTemp6, event.SoilTemp7, event.SoilTemp8, event.SoilTemp9, event.SoilTemp10, event.SoilHum1, event.SoilHum2, event.SoilHum3, event.SoilHum4, event.SoilHum5, event.SoilHum6, event.SoilHum7, event.SoilHum8, event.SoilHum9, event.SoilHum10, event.Leak1, event.Leak2, event.Leak3, event.Leak4, event.Lightning_Time, event.Lightning_Day, event.Lightning_Distance, event.BattOut, event.BattIn, event.Batt1, event.Batt2, event.Batt3, event.Batt4, event.Batt5, event.Batt6, event.Batt7, event.Batt8, event.Batt9, event.Batt10, event.BattR1, event.BattR2, event.BattR3, event.BattR4, event.BattR5, event.BattR6, event.BattR7, event.BattR8, event.BattR9, event.BattR10, event.Batt_25, event.Batt_25In, event.BatLeak1, event.BatLeak2, event.BatLeak3, event.BatLeak4, event.Batt_Lightning, event.BattSM1, event.BattSM2, event.BattSM3, event.BattSM4, event.BattRain, event.BattCO2, event.StationType, event.PASSKEY) return err } func (e eventService) DeleteEvent(event *weather.AmbientEntry) error { queryString := "DELETE FROM events WHERE id = $1" _, err := e.db.Exec(queryString, event.ID) return err }