mirror of
https://github.com/tobiasehlert/teslamateapi.git
synced 2026-02-27 09:54:18 +08:00
adding address details (#212)
- added AddressDetails for all endpoints Co-Authored-By: Vincent Barrier <vbarrier@kagilum.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user