Files
old-backend/models/device_info.go
2023-10-09 08:33:51 +02:00

97 lines
2.5 KiB
Go

package models
import (
"github.com/jinzhu/gorm"
)
// 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 {
gorm.Model
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
}