Files
evening_detective_server/internal/app/devices_mapper.go
T
2026-10-11 13:47:22 +07:00

54 lines
1.5 KiB
Go

package app
import (
"evening_detective_server/internal/services/device_presence_service"
proto "evening_detective_server/proto"
"google.golang.org/protobuf/types/known/timestamppb"
)
func deviceOptionalID(id *int32) *int {
if id == nil {
return nil
}
value := int(*id)
return &value
}
func devicePublicID(id int) *int32 {
if id == 0 {
return nil
}
value := int32(id)
return &value
}
func mapVenueDevices(devices []device_presence_service.Device) []*proto.VenueDevice {
result := make([]*proto.VenueDevice, 0, len(devices))
for _, device := range devices {
connections := make([]*proto.DeviceConnection, 0, len(device.Connections))
for _, connection := range device.Connections {
connections = append(connections, &proto.DeviceConnection{
ID: connection.ID,
FirstSeenAt: timestamppb.New(connection.FirstSeenAt),
LastSeenAt: timestamppb.New(connection.LastSeenAt),
IP: connection.IP,
UserAgent: connection.UserAgent,
Connected: connection.Connected,
GameID: devicePublicID(connection.GameID),
TeamID: devicePublicID(connection.TeamID),
ScreenID: devicePublicID(connection.ScreenID),
Kind: connection.Kind,
})
}
result = append(result, &proto.VenueDevice{
ID: device.ID,
FirstSeenAt: timestamppb.New(device.FirstSeenAt),
LastSeenAt: timestamppb.New(device.LastSeenAt),
Connected: device.Connected,
Connections: connections,
})
}
return result
}