package model

import "time"

// MonitoredServer is persisted and exposed to the frontend display.
type MonitoredServer struct {
	ID        string    `json:"id"`
	Name      string    `json:"name"`
	URL       string    `json:"url"`
	Enabled   bool      `json:"enabled"`
	SortOrder int       `json:"sortOrder"`
	AgentKey  string    `json:"agentKey,omitempty"`
	CreatedAt time.Time `json:"createdAt,omitempty"`
}

type CreateServerInput struct {
	Name    string `json:"name" binding:"required"`
	URL     string `json:"url"`
	Enabled *bool  `json:"enabled"`
}

type UpdateServerInput struct {
	Name     string  `json:"name"`
	URL      *string `json:"url"`
	Enabled  *bool   `json:"enabled"`
	AgentKey *string `json:"agentKey"`
}

type ReorderInput struct {
	IDs []string `json:"ids" binding:"required"`
}

type AuthInput struct {
	Token string `json:"token" binding:"required"`
}
