package model

import "wireguard-ui/global/constant"

type Client struct {
	Base
	Name              string          `json:"name" gorm:"type:varchar(100);not null;comment:'客户端名称'"`
	Email             string          `json:"email" gorm:"type:varchar(100);default null;comment:'联系邮箱'"`
	SubnetRange       string          `json:"subnetRange" gorm:"type:varchar(255);default null;comment:'子网范围'"`
	IpAllocation      string          `json:"ipAllocation" gorm:"type:varchar(255);not null;comment:'客户端ip'"`
	AllowedIps        string          `json:"allowedIps" gorm:"type:varchar(255);not null;comment:'允许访问的ip'"`
	ExtraAllowedIps   string          `json:"extraAllowedIps" gorm:"type:varchar(255);default null;comment:'额外允许的ip范围'"`
	Endpoint          string          `json:"endpoint" gorm:"type:varchar(255);default null;comment:'端点'"`
	UseServerDns      constant.Status `json:"useServerDns" gorm:"type:tinyint(1);default 1;comment:'是否使用服务端dns'"`
	Keys              string          `json:"keys" gorm:"type:text;default null;comment:'公钥和密钥的json串'"`
	UserId            string          `json:"userId" gorm:"type:char(36);not null;comment:'创建人id'"`
	Enabled           constant.Status `json:"enabled" gorm:"type:tinyint(1);default 1;comment:'状态(0 - 禁用 | 1 - 正常)'"`
	OfflineMonitoring constant.Status `json:"offlineMonitoring" gorm:"tinyint(1);default 0;comment:'是否启用离线监听(0 - 禁用 | 1 - 启用)"`
	User              *User           `json:"user" gorm:"foreignKey:UserId"`
}

func (Client) TableName() string {
	return "t_client"
}

// Watcher
// @description: 监听日志
type Watcher struct {
	Base
	ClientId     string `json:"clientId" gorm:"type:char(36);not null;comment:'客户端id'"`
	NotifyResult string `json:"notifyResult" gorm:"type:text;default null;comment:'通知结果'"`
	IsSend       int    `json:"isSend" gorm:"type:tinyint(1);default 0;comment:'是否已通知'"`
}

func (Watcher) TableName() string {
	return "t_watcher"
}