89 lines
2.5 KiB
Go
89 lines
2.5 KiB
Go
package models
|
|
|
|
// Location holds latitude and longitude.
|
|
type Location struct {
|
|
Lat float64 `json:"lat"`
|
|
Lon float64 `json:"lon"`
|
|
}
|
|
|
|
// ImportantInfo holds fields that are important for quick access.
|
|
type SensorData struct {
|
|
IMEI string `json:"imei"`
|
|
IMSI string `json:"imsi"`
|
|
Timestamp int64 `json:"timestamp"`
|
|
Lat float64 `json:"lat"`
|
|
Lon float64 `json:"lon"`
|
|
WifiLoc Location `json:"wifiLocation"`
|
|
CellLoc Location `json:"cellLocation"`
|
|
Temperature float64 `json:"temperature"`
|
|
AccInfo AccelerometerInfo `json:"accelerometerInfo"`
|
|
AccelerometerInfo
|
|
}
|
|
|
|
type DeviceInfo struct {
|
|
BaseModel
|
|
RawJSON string `json:"raw_json" gorm:"type:json"`
|
|
SensorData
|
|
DeviceID uint
|
|
ExternalDeviceID string `json:"deviceId"`
|
|
}
|
|
|
|
type DeviceInfoResponse struct {
|
|
BaseModel
|
|
RawJSON string `json:"rawJson" gorm:"type:json"`
|
|
SensorData
|
|
DeviceID uint `json:"deviceId"`
|
|
ExternalDeviceID string `json:"externalDeviceId"`
|
|
}
|
|
|
|
func ConvertDeviceInfoToResponse(deviceInfos []DeviceInfo) []DeviceInfoResponse {
|
|
var deviceInfoResponses []DeviceInfoResponse
|
|
for _, deviceInfo := range deviceInfos {
|
|
deviceInfoResponse := DeviceInfoResponse{
|
|
BaseModel: BaseModel{
|
|
ID: deviceInfo.ID,
|
|
CreatedAt: deviceInfo.CreatedAt,
|
|
UpdatedAt: deviceInfo.UpdatedAt,
|
|
},
|
|
RawJSON: deviceInfo.RawJSON,
|
|
SensorData: deviceInfo.SensorData,
|
|
DeviceID: deviceInfo.DeviceID,
|
|
ExternalDeviceID: deviceInfo.ExternalDeviceID,
|
|
}
|
|
deviceInfoResponses = append(deviceInfoResponses, deviceInfoResponse)
|
|
}
|
|
return deviceInfoResponses
|
|
}
|
|
|
|
type AccelerometerInfo struct {
|
|
X int64 `json:"x"`
|
|
Y int64 `json:"y"`
|
|
Z int64 `json:"z"`
|
|
}
|
|
type GeoJSONFeatureCollection struct {
|
|
Type string `json:"type"`
|
|
Features []GeoJSONFeature `json:"features"`
|
|
}
|
|
|
|
type GeoJSONFeature struct {
|
|
Type string `json:"type"`
|
|
Geometry GeoJSONGeometry `json:"geometry"`
|
|
DeviceInfoResponse *DeviceInfoResponse `json:"deviceInfo,omitempty"`
|
|
Properties map[string]interface{} `json:"properties"`
|
|
}
|
|
|
|
type GeoJSONGeometry struct {
|
|
Type string `json:"type"`
|
|
Coordinates []float64 `json:"coordinates"`
|
|
}
|
|
|
|
func (DeviceInfo) Update() (bool, error) {
|
|
return false, nil
|
|
}
|
|
func (DeviceInfo) Create() (bool, error) {
|
|
return false, nil
|
|
}
|
|
func (DeviceInfo) Delete() (bool, error) {
|
|
return false, nil
|
|
}
|