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
|
CarID int `json:"car_id"` // smallint
|
||||||
CarName NullString `json:"car_name"` // text (nullable)
|
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
|
// OdometerDetails struct - child of Drives
|
||||||
type OdometerDetails struct {
|
type OdometerDetails struct {
|
||||||
OdometerStart float64 `json:"odometer_start"` // float64
|
OdometerStart float64 `json:"odometer_start"` // float64
|
||||||
@@ -46,23 +59,25 @@ func TeslaMateAPICarsDrivesV1(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
// Drives struct - child of Data
|
// Drives struct - child of Data
|
||||||
type Drives struct {
|
type Drives struct {
|
||||||
DriveID int `json:"drive_id"` // int
|
DriveID int `json:"drive_id"` // int
|
||||||
StartDate string `json:"start_date"` // string
|
StartDate string `json:"start_date"` // string
|
||||||
EndDate string `json:"end_date"` // string
|
EndDate string `json:"end_date"` // string
|
||||||
StartAddress string `json:"start_address"` // string
|
StartAddress string `json:"start_address"` // string
|
||||||
EndAddress string `json:"end_address"` // string
|
EndAddress string `json:"end_address"` // string
|
||||||
OdometerDetails OdometerDetails `json:"odometer_details"` // OdometerDetails
|
StartAddressDetails AddressDetails `json:"start_address_details"` // struct
|
||||||
DurationMin int `json:"duration_min"` // int
|
EndAddressDetails AddressDetails `json:"end_address_details"` // struct
|
||||||
DurationStr string `json:"duration_str"` // string
|
OdometerDetails OdometerDetails `json:"odometer_details"` // OdometerDetails
|
||||||
SpeedMax int `json:"speed_max"` // int
|
DurationMin int `json:"duration_min"` // int
|
||||||
SpeedAvg float64 `json:"speed_avg"` // float64
|
DurationStr string `json:"duration_str"` // string
|
||||||
PowerMax int `json:"power_max"` // int
|
SpeedMax int `json:"speed_max"` // int
|
||||||
PowerMin int `json:"power_min"` // int
|
SpeedAvg float64 `json:"speed_avg"` // float64
|
||||||
BatteryDetails BatteryDetails `json:"battery_details"` // BatteryDetails
|
PowerMax int `json:"power_max"` // int
|
||||||
RangeIdeal PreferredRange `json:"range_ideal"` // PreferredRange
|
PowerMin int `json:"power_min"` // int
|
||||||
RangeRated PreferredRange `json:"range_rated"` // PreferredRange
|
BatteryDetails BatteryDetails `json:"battery_details"` // BatteryDetails
|
||||||
OutsideTempAvg float64 `json:"outside_temp_avg"` // float64
|
RangeIdeal PreferredRange `json:"range_ideal"` // PreferredRange
|
||||||
InsideTempAvg float64 `json:"inside_temp_avg"` // float64
|
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
|
// TeslaMateUnits struct - child of Data
|
||||||
type TeslaMateUnits struct {
|
type TeslaMateUnits struct {
|
||||||
@@ -103,6 +118,26 @@ func TeslaMateAPICarsDrivesV1(c *gin.Context) {
|
|||||||
end_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(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(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,
|
start_km,
|
||||||
end_km,
|
end_km,
|
||||||
distance,
|
distance,
|
||||||
@@ -164,6 +199,26 @@ func TeslaMateAPICarsDrivesV1(c *gin.Context) {
|
|||||||
&drive.EndDate,
|
&drive.EndDate,
|
||||||
&drive.StartAddress,
|
&drive.StartAddress,
|
||||||
&drive.EndAddress,
|
&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.OdometerStart,
|
||||||
&drive.OdometerDetails.OdometerEnd,
|
&drive.OdometerDetails.OdometerEnd,
|
||||||
&drive.OdometerDetails.OdometerDistance,
|
&drive.OdometerDetails.OdometerDistance,
|
||||||
|
|||||||
@@ -82,26 +82,41 @@ func TeslaMateAPICarsDrivesDetailsV1(c *gin.Context) {
|
|||||||
ClimateInfo ClimateInfo `json:"climate_info"` // struct
|
ClimateInfo ClimateInfo `json:"climate_info"` // struct
|
||||||
BatteryInfo BatteryInfo `json:"battery_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
|
// Drive struct - child of Data
|
||||||
type Drive struct {
|
type Drive struct {
|
||||||
DriveID int `json:"drive_id"` // int
|
DriveID int `json:"drive_id"` // int
|
||||||
StartDate string `json:"start_date"` // string
|
StartDate string `json:"start_date"` // string
|
||||||
EndDate string `json:"end_date"` // string
|
EndDate string `json:"end_date"` // string
|
||||||
StartAddress string `json:"start_address"` // string
|
StartAddress string `json:"start_address"` // string
|
||||||
EndAddress string `json:"end_address"` // string
|
EndAddress string `json:"end_address"` // string
|
||||||
OdometerDetails OdometerDetails `json:"odometer_details"` // OdometerDetails
|
StartAddressDetails AddressDetails `json:"start_address_details"` // struct
|
||||||
DurationMin int `json:"duration_min"` // int
|
EndAddressDetails AddressDetails `json:"end_address_details"` // struct
|
||||||
DurationStr string `json:"duration_str"` // string
|
OdometerDetails OdometerDetails `json:"odometer_details"` // OdometerDetails
|
||||||
SpeedMax int `json:"speed_max"` // int
|
DurationMin int `json:"duration_min"` // int
|
||||||
SpeedAvg float64 `json:"speed_avg"` // float64
|
DurationStr string `json:"duration_str"` // string
|
||||||
PowerMax int `json:"power_max"` // int
|
SpeedMax int `json:"speed_max"` // int
|
||||||
PowerMin int `json:"power_min"` // int
|
SpeedAvg float64 `json:"speed_avg"` // float64
|
||||||
BatteryDetails BatteryDetails `json:"battery_details"` // BatteryDetails
|
PowerMax int `json:"power_max"` // int
|
||||||
RangeIdeal PreferredRange `json:"range_ideal"` // PreferredRange
|
PowerMin int `json:"power_min"` // int
|
||||||
RangeRated PreferredRange `json:"range_rated"` // PreferredRange
|
BatteryDetails BatteryDetails `json:"battery_details"` // BatteryDetails
|
||||||
OutsideTempAvg float64 `json:"outside_temp_avg"` // float64
|
RangeIdeal PreferredRange `json:"range_ideal"` // PreferredRange
|
||||||
InsideTempAvg float64 `json:"inside_temp_avg"` // float64
|
RangeRated PreferredRange `json:"range_rated"` // PreferredRange
|
||||||
DriveDetails []DriveDetails `json:"drive_details"` // struct
|
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
|
// TeslaMateUnits struct - child of Data
|
||||||
type TeslaMateUnits struct {
|
type TeslaMateUnits struct {
|
||||||
@@ -133,8 +148,28 @@ func TeslaMateAPICarsDrivesDetailsV1(c *gin.Context) {
|
|||||||
drives.id AS drive_id,
|
drives.id AS drive_id,
|
||||||
start_date,
|
start_date,
|
||||||
end_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(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,
|
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,
|
start_km,
|
||||||
end_km,
|
end_km,
|
||||||
distance,
|
distance,
|
||||||
@@ -179,6 +214,26 @@ func TeslaMateAPICarsDrivesDetailsV1(c *gin.Context) {
|
|||||||
&drive.EndDate,
|
&drive.EndDate,
|
||||||
&drive.StartAddress,
|
&drive.StartAddress,
|
||||||
&drive.EndAddress,
|
&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.OdometerStart,
|
||||||
&drive.OdometerDetails.OdometerEnd,
|
&drive.OdometerDetails.OdometerEnd,
|
||||||
&drive.OdometerDetails.OdometerDistance,
|
&drive.OdometerDetails.OdometerDistance,
|
||||||
|
|||||||
Reference in New Issue
Block a user