@@ -31,6 +31,7 @@ type Device struct {
3131 Latitude float64 `bun:"latitude,type:numeric"`
3232
3333 Namespace * Namespace `bun:"rel:belongs-to,join:namespace_id=id"`
34+ Tags []* Tag `bun:"rel:has-many,join:id=device_id,join:namespace_id=namespace_id,m2m:device_tags,on_delete:cascade"`
3435}
3536
3637func DeviceFromModel (model * models.Device ) * Device {
@@ -43,6 +44,7 @@ func DeviceFromModel(model *models.Device) *Device {
4344 Status : string (model .Status ),
4445 Name : model .Name ,
4546 PublicKey : model .PublicKey ,
47+ Tags : []* Tag {},
4648 }
4749
4850 if model .DisconnectedAt != nil {
@@ -66,6 +68,13 @@ func DeviceFromModel(model *models.Device) *Device {
6668 device .Platform = model .Info .Platform
6769 }
6870
71+ if len (model .Tags ) > 0 {
72+ device .Tags = make ([]* Tag , len (model .Tags ))
73+ for i , t := range model .Tags {
74+ device .Tags [i ] = TagFromModel (& t )
75+ }
76+ }
77+
6978 return device
7079}
7180
@@ -83,7 +92,9 @@ func DeviceToModel(entity *Device) *models.Device {
8392 Namespace : entity .Namespace .Name ,
8493 DisconnectedAt : nil ,
8594 RemoteAddr : "" ,
86- Tags : []string {},
95+ Taggable : models.Taggable {
96+ Tags : []models.Tag {},
97+ },
8798 Position : & models.DevicePosition {
8899 Longitude : entity .Longitude ,
89100 Latitude : entity .Latitude ,
@@ -105,5 +116,12 @@ func DeviceToModel(entity *Device) *models.Device {
105116 device .DisconnectedAt = & disconnectedAt
106117 }
107118
119+ if len (entity .Tags ) > 0 {
120+ device .Tags = make ([]models.Tag , len (entity .Tags ))
121+ for i , t := range entity .Tags {
122+ device .Tags [i ] = * TagToModel (t )
123+ }
124+ }
125+
108126 return device
109127}
0 commit comments