diff --git a/src/v1_TeslaMateAPICarsDrives.go b/src/v1_TeslaMateAPICarsDrives.go index 70958d0..ebcddfc 100644 --- a/src/v1_TeslaMateAPICarsDrives.go +++ b/src/v1_TeslaMateAPICarsDrives.go @@ -23,6 +23,19 @@ func TeslaMateAPICarsDrivesV1(c *gin.Context) { CarID int `json:"car_id"` // smallint CarName NullString `json:"car_name"` // text (nullable) } + // AddressDetails struct - child of Drive + type AddressDetails struct { + AddressID int `json:"address_id"` // integer + HouseNumber NullString `json:"house_number"` // text + Road NullString `json:"road"` // text + Neighbourhood NullString `json:"neighbourhood"` // text + City NullString `json:"city"` // text + County NullString `json:"county"` // text + PostCode NullString `json:"post_code"` // text + State NullString `json:"state"` // text + StateDistrict NullString `json:"state_district"` // text + Country NullString `json:"country"` // text + } // OdometerDetails struct - child of Drives type OdometerDetails struct { OdometerStart float64 `json:"odometer_start"` // float64 @@ -46,23 +59,25 @@ func TeslaMateAPICarsDrivesV1(c *gin.Context) { } // Drives struct - child of Data type Drives struct { - DriveID int `json:"drive_id"` // int - StartDate string `json:"start_date"` // string - EndDate string `json:"end_date"` // string - StartAddress string `json:"start_address"` // string - EndAddress string `json:"end_address"` // string - OdometerDetails OdometerDetails `json:"odometer_details"` // OdometerDetails - DurationMin int `json:"duration_min"` // int - DurationStr string `json:"duration_str"` // string - SpeedMax int `json:"speed_max"` // int - SpeedAvg float64 `json:"speed_avg"` // float64 - PowerMax int `json:"power_max"` // int - PowerMin int `json:"power_min"` // int - BatteryDetails BatteryDetails `json:"battery_details"` // BatteryDetails - RangeIdeal PreferredRange `json:"range_ideal"` // PreferredRange - RangeRated PreferredRange `json:"range_rated"` // PreferredRange - OutsideTempAvg float64 `json:"outside_temp_avg"` // float64 - InsideTempAvg float64 `json:"inside_temp_avg"` // float64 + DriveID int `json:"drive_id"` // int + StartDate string `json:"start_date"` // string + EndDate string `json:"end_date"` // string + StartAddress string `json:"start_address"` // string + EndAddress string `json:"end_address"` // string + StartAddressDetails AddressDetails `json:"start_address_details"` // struct + EndAddressDetails AddressDetails `json:"end_address_details"` // struct + OdometerDetails OdometerDetails `json:"odometer_details"` // OdometerDetails + DurationMin int `json:"duration_min"` // int + DurationStr string `json:"duration_str"` // string + SpeedMax int `json:"speed_max"` // int + SpeedAvg float64 `json:"speed_avg"` // float64 + PowerMax int `json:"power_max"` // int + PowerMin int `json:"power_min"` // int + BatteryDetails BatteryDetails `json:"battery_details"` // BatteryDetails + RangeIdeal PreferredRange `json:"range_ideal"` // PreferredRange + RangeRated PreferredRange `json:"range_rated"` // PreferredRange + OutsideTempAvg float64 `json:"outside_temp_avg"` // float64 + InsideTempAvg float64 `json:"inside_temp_avg"` // float64 } // TeslaMateUnits struct - child of Data type TeslaMateUnits struct { @@ -103,6 +118,26 @@ func TeslaMateAPICarsDrivesV1(c *gin.Context) { end_date, COALESCE(start_geofence.name, CONCAT_WS(', ', COALESCE(start_address.name, nullif(CONCAT_WS(' ', start_address.road, start_address.house_number), '')), start_address.city)) AS start_address, COALESCE(end_geofence.name, CONCAT_WS(', ', COALESCE(end_address.name, nullif(CONCAT_WS(' ', end_address.road, end_address.house_number), '')), end_address.city)) AS end_address, + start_address.id, + start_address.house_number, + start_address.road, + start_address.neighbourhood, + start_address.city, + start_address.county, + start_address.postcode, + start_address.state, + start_address.state_district, + start_address.country, + end_address.id, + end_address.house_number, + end_address.road, + end_address.neighbourhood, + end_address.city, + end_address.county, + end_address.postcode, + end_address.state, + end_address.state_district, + end_address.country, start_km, end_km, distance, @@ -164,6 +199,26 @@ func TeslaMateAPICarsDrivesV1(c *gin.Context) { &drive.EndDate, &drive.StartAddress, &drive.EndAddress, + &drive.StartAddressDetails.AddressID, + &drive.StartAddressDetails.HouseNumber, + &drive.StartAddressDetails.Road, + &drive.StartAddressDetails.Neighbourhood, + &drive.StartAddressDetails.City, + &drive.StartAddressDetails.County, + &drive.StartAddressDetails.PostCode, + &drive.StartAddressDetails.State, + &drive.StartAddressDetails.StateDistrict, + &drive.StartAddressDetails.Country, + &drive.EndAddressDetails.AddressID, + &drive.EndAddressDetails.HouseNumber, + &drive.EndAddressDetails.Road, + &drive.EndAddressDetails.Neighbourhood, + &drive.EndAddressDetails.City, + &drive.EndAddressDetails.County, + &drive.EndAddressDetails.PostCode, + &drive.EndAddressDetails.State, + &drive.EndAddressDetails.StateDistrict, + &drive.EndAddressDetails.Country, &drive.OdometerDetails.OdometerStart, &drive.OdometerDetails.OdometerEnd, &drive.OdometerDetails.OdometerDistance, diff --git a/src/v1_TeslaMateAPICarsDrivesDetails.go b/src/v1_TeslaMateAPICarsDrivesDetails.go index bb5e5c1..ec44579 100644 --- a/src/v1_TeslaMateAPICarsDrivesDetails.go +++ b/src/v1_TeslaMateAPICarsDrivesDetails.go @@ -82,26 +82,41 @@ func TeslaMateAPICarsDrivesDetailsV1(c *gin.Context) { ClimateInfo ClimateInfo `json:"climate_info"` // struct BatteryInfo BatteryInfo `json:"battery_info"` // struct } + // AddressDetails struct - child of Drive + type AddressDetails struct { + AddressID int `json:"address_id"` // integer + HouseNumber NullString `json:"house_number"` // text + Road NullString `json:"road"` // text + Neighbourhood NullString `json:"neighbourhood"` // text + City NullString `json:"city"` // text + County NullString `json:"county"` // text + PostCode NullString `json:"post_code"` // text + State NullString `json:"state"` // text + StateDistrict NullString `json:"state_district"` // text + Country NullString `json:"country"` // text + } // Drive struct - child of Data type Drive struct { - DriveID int `json:"drive_id"` // int - StartDate string `json:"start_date"` // string - EndDate string `json:"end_date"` // string - StartAddress string `json:"start_address"` // string - EndAddress string `json:"end_address"` // string - OdometerDetails OdometerDetails `json:"odometer_details"` // OdometerDetails - DurationMin int `json:"duration_min"` // int - DurationStr string `json:"duration_str"` // string - SpeedMax int `json:"speed_max"` // int - SpeedAvg float64 `json:"speed_avg"` // float64 - PowerMax int `json:"power_max"` // int - PowerMin int `json:"power_min"` // int - BatteryDetails BatteryDetails `json:"battery_details"` // BatteryDetails - RangeIdeal PreferredRange `json:"range_ideal"` // PreferredRange - RangeRated PreferredRange `json:"range_rated"` // PreferredRange - OutsideTempAvg float64 `json:"outside_temp_avg"` // float64 - InsideTempAvg float64 `json:"inside_temp_avg"` // float64 - DriveDetails []DriveDetails `json:"drive_details"` // struct + DriveID int `json:"drive_id"` // int + StartDate string `json:"start_date"` // string + EndDate string `json:"end_date"` // string + StartAddress string `json:"start_address"` // string + EndAddress string `json:"end_address"` // string + StartAddressDetails AddressDetails `json:"start_address_details"` // struct + EndAddressDetails AddressDetails `json:"end_address_details"` // struct + OdometerDetails OdometerDetails `json:"odometer_details"` // OdometerDetails + DurationMin int `json:"duration_min"` // int + DurationStr string `json:"duration_str"` // string + SpeedMax int `json:"speed_max"` // int + SpeedAvg float64 `json:"speed_avg"` // float64 + PowerMax int `json:"power_max"` // int + PowerMin int `json:"power_min"` // int + BatteryDetails BatteryDetails `json:"battery_details"` // BatteryDetails + RangeIdeal PreferredRange `json:"range_ideal"` // PreferredRange + RangeRated PreferredRange `json:"range_rated"` // PreferredRange + OutsideTempAvg float64 `json:"outside_temp_avg"` // float64 + InsideTempAvg float64 `json:"inside_temp_avg"` // float64 + DriveDetails []DriveDetails `json:"drive_details"` // struct } // TeslaMateUnits struct - child of Data type TeslaMateUnits struct { @@ -133,8 +148,28 @@ func TeslaMateAPICarsDrivesDetailsV1(c *gin.Context) { drives.id AS drive_id, start_date, end_date, - COALESCE(start_geofence.name, CONCAT_WS(', ', COALESCE(start_address.name, nullif(CONCAT_WS(' ', start_address.road, start_address.house_number), '')), start_address.city)) AS start_address, - COALESCE(end_geofence.name, CONCAT_WS(', ', COALESCE(end_address.name, nullif(CONCAT_WS(' ', end_address.road, end_address.house_number), '')), end_address.city)) AS end_address, + COALESCE(start_geofence.name, CONCAT_WS(', ', COALESCE(start_address.name, nullif(CONCAT_WS(' ', start_address.road, start_address.house_number), '')), start_address.city)) AS start_address_simple, + COALESCE(end_geofence.name, CONCAT_WS(', ', COALESCE(end_address.name, nullif(CONCAT_WS(' ', end_address.road, end_address.house_number), '')), end_address.city)) AS end_address_simple, + start_address.id, + start_address.house_number, + start_address.road, + start_address.neighbourhood, + start_address.city, + start_address.county, + start_address.postcode, + start_address.state, + start_address.state_district, + start_address.country, + end_address.id, + end_address.house_number, + end_address.road, + end_address.neighbourhood, + end_address.city, + end_address.county, + end_address.postcode, + end_address.state, + end_address.state_district, + end_address.country, start_km, end_km, distance, @@ -179,6 +214,26 @@ func TeslaMateAPICarsDrivesDetailsV1(c *gin.Context) { &drive.EndDate, &drive.StartAddress, &drive.EndAddress, + &drive.StartAddressDetails.AddressID, + &drive.StartAddressDetails.HouseNumber, + &drive.StartAddressDetails.Road, + &drive.StartAddressDetails.Neighbourhood, + &drive.StartAddressDetails.City, + &drive.StartAddressDetails.County, + &drive.StartAddressDetails.PostCode, + &drive.StartAddressDetails.State, + &drive.StartAddressDetails.StateDistrict, + &drive.StartAddressDetails.Country, + &drive.EndAddressDetails.AddressID, + &drive.EndAddressDetails.HouseNumber, + &drive.EndAddressDetails.Road, + &drive.EndAddressDetails.Neighbourhood, + &drive.EndAddressDetails.City, + &drive.EndAddressDetails.County, + &drive.EndAddressDetails.PostCode, + &drive.EndAddressDetails.State, + &drive.EndAddressDetails.StateDistrict, + &drive.EndAddressDetails.Country, &drive.OdometerDetails.OdometerStart, &drive.OdometerDetails.OdometerEnd, &drive.OdometerDetails.OdometerDistance,