mirror of https://github.com/h44z/wg-portal.git
				
				
				
			
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
| package models
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/fedor-git/wg-portal-2/internal/domain"
 | |
| )
 | |
| 
 | |
| // PeerMetrics represents a peer metrics model for webhooks.
 | |
| // For details about the fields, see the domain.PeerStatus and domain.Peer structs.
 | |
| type PeerMetrics struct {
 | |
| 	Status PeerStatus `json:"Status"`
 | |
| 	Peer   Peer       `json:"Peer"`
 | |
| }
 | |
| 
 | |
| // PeerStatus represents the status of a peer for webhooks.
 | |
| // For details about the fields, see the domain.PeerStatus struct.
 | |
| type PeerStatus struct {
 | |
| 	UpdatedAt time.Time `json:"UpdatedAt"`
 | |
| 
 | |
| 	IsConnected bool `json:"IsConnected"`
 | |
| 
 | |
| 	IsPingable bool       `json:"IsPingable"`
 | |
| 	LastPing   *time.Time `json:"LastPing,omitempty"`
 | |
| 
 | |
| 	BytesReceived    uint64 `json:"BytesReceived"`
 | |
| 	BytesTransmitted uint64 `json:"BytesTransmitted"`
 | |
| 
 | |
| 	Endpoint         string     `json:"Endpoint"`
 | |
| 	LastHandshake    *time.Time `json:"LastHandshake,omitempty"`
 | |
| 	LastSessionStart *time.Time `json:"LastSessionStart,omitempty"`
 | |
| }
 | |
| 
 | |
| // NewPeerMetrics creates a new PeerMetrics model from the domain.PeerStatus and domain.Peer models.
 | |
| func NewPeerMetrics(status domain.PeerStatus, peer domain.Peer) PeerMetrics {
 | |
| 	return PeerMetrics{
 | |
| 		Status: PeerStatus{
 | |
| 			UpdatedAt:        status.UpdatedAt,
 | |
| 			IsConnected:      status.IsConnected,
 | |
| 			IsPingable:       status.IsPingable,
 | |
| 			LastPing:         status.LastPing,
 | |
| 			BytesReceived:    status.BytesReceived,
 | |
| 			BytesTransmitted: status.BytesTransmitted,
 | |
| 			Endpoint:         status.Endpoint,
 | |
| 			LastHandshake:    status.LastHandshake,
 | |
| 			LastSessionStart: status.LastSessionStart,
 | |
| 		},
 | |
| 		Peer: NewPeer(peer),
 | |
| 	}
 | |
| }
 |