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 }