package license

// 项目信息
type ProjectInfo struct {
	ProjectName  string `mapstructure:"project_name"`
	UserName     string `mapstructure:"user_name"`
	UserAddr     string `mapstructure:"user_addr"`
	SerialNumber string `mapstructure:"serial_number"`
}

// /环境信息
type EnvironmentInfo struct {
	CpuSN       string `mapstructure:"cpu_sn"`
	BaseboardSN string `mapstructure:"baseboard_sn"`
	MacAddr     string `mapstructure:"mac_addr"`
	DiskID      string `mapstructure:"disk_id"`
	IPAddr      string `mapstructure:"ip_addr"`
}

// License信息
type LicenseInfo struct {
	GenDate        string `mapstructure:"gen_date"`
	ExpireDate     string `mapstructure:"expire_date"`
	LicenseType    int    `mapstructure:"license_type"`
	LicenseVersion int    `mapstructure:"license_version"`
	HardType       int    `mapstructure:"hard_type"`
}

// 功能信息
type FeatureInfo struct {
	HA                bool `mapstructure:"ha"`
	Hint              bool `mapstructure:"hint"`
	FullTextIndex     bool `mapstructure:"full_text_index"`
	FunctionIndex     bool `mapstructure:"function_index"`
	BatchMode         bool `mapstructure:"batch_mode"`
	PlSql             bool `mapstructure:"pl_sql"`
	AddNode           bool `mapstructure:"add_node"`
	AutoPartition     bool `mapstructure:"auto_partition"`
	ResourceQuota     bool `mapstructure:"resource_quota"`
	NetChannel        int  `mapstructure:"net_channel"`
	DataAutoRebalance bool `mapstructure:"data_auto_rebalance"`
	BlackWhiteList    bool `mapstructure:"black_white_list"`
	Mac               bool `mapstructure:"mac"`
	ColPrivilege      bool `mapstructure:"col_privilege"`
	TransmitEncrypt   bool `mapstructure:"transmit_encrypt"`
	StoreEncrypt      bool `mapstructure:"store_encrypt"`
	BackupEncrypt     bool `mapstructure:"backup_encrypt"`
	AuditMode         int  `mapstructure:"audit_mode"`
	GlobalBinlogNode  int  `mapstructure:"global_binlog_node"`
	Dblink            bool `mapstructure:"dblink"`
	Json              bool `mapstructure:"json"`
	Spatial           bool `mapstructure:"spatial"`
	MaxParallel       int  `mapstructure:"max_parallel"`
	StreamLoad        bool `mapstructure:"stream_load"`
}

// 服务能力
type ServiceCapacity struct {
	InstanceNum   int `mapstructure:"instance_num"`
	TableRows     int `mapstructure:"table_rows"`
	ConnectNum    int `mapstructure:"connect_num"`
	StoreCapacity int `mapstructure:"store_capacity"`
	MaxNodeNum    int `mapstructure:"max_node_num"`
	ListenChannel int `mapstructure:"listen_channel"`
}
type LicenseApplication struct {
	ProjectInfo
	EnvironmentInfo
	LicenseInfo
	FeatureInfo
	ServiceCapacity
}

type PersonLicense struct {
	ProjectInfo
	EnvironmentInfo
	LicenseInfo
	FeatureInfo
	ServiceCapacity
}

type StdLicense struct {
	ProjectInfo
	EnvironmentInfo
	LicenseInfo
	FeatureInfo
	ServiceCapacity
}

type ClusterLicense struct {
	ProjectInfo
	EnvironmentInfo
	LicenseInfo
	FeatureInfo
	ServiceCapacity
}

type EntLicense struct {
	ProjectInfo
	EnvironmentInfo
	LicenseInfo
	FeatureInfo
	ServiceCapacity
}

type LiteLicense struct {
	ProjectInfo
	EnvironmentInfo
	LicenseInfo
	FeatureInfo
	ServiceCapacity
}