Skip to content

Commit

Permalink
adding address details (#212)
Browse files Browse the repository at this point in the history
- added AddressDetails for all endpoints

Co-Authored-By: Vincent Barrier <[email protected]>
  • Loading branch information
tobiasehlert and vbarrier committed Sep 22, 2023
1 parent 1a3378e commit 48cd0ae
Show file tree
Hide file tree
Showing 2 changed files with 147 additions and 37 deletions.
89 changes: 72 additions & 17 deletions src/v1_TeslaMateAPICarsDrives.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 {
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
95 changes: 75 additions & 20 deletions src/v1_TeslaMateAPICarsDrivesDetails.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 48cd0ae

Please sign in to comment.