package models

import (
	"github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts"
	"github.com/hashicorp/terraform-plugin-framework/types"
)

type ResourceLBModel struct {
	// required fields
	RGID     types.Int64  `tfsdk:"rg_id"`
	Name     types.String `tfsdk:"name"`
	ExtNetID types.Int64  `tfsdk:"extnet_id"`
	VINSID   types.Int64  `tfsdk:"vins_id"`
	Start    types.Bool   `tfsdk:"start"`

	// optional fields
	HAMode       types.Bool     `tfsdk:"ha_mode"`
	ACL          types.String   `tfsdk:"acl"`
	Description  types.String   `tfsdk:"desc"`
	Enable       types.Bool     `tfsdk:"enable"`
	Restart      types.Bool     `tfsdk:"restart"`
	ConfigReset  types.Bool     `tfsdk:"config_reset"`
	Permanently  types.Bool     `tfsdk:"permanently"`
	Restore      types.Bool     `tfsdk:"restore"`
	Safe         types.Bool     `tfsdk:"safe"`
	SysctlParams types.List     `tfsdk:"sysctl_params"`
	Timeouts     timeouts.Value `tfsdk:"timeouts"`

	// response fields
	BackendHAIP   types.String `tfsdk:"backend_haip"`
	Backends      types.List   `tfsdk:"backends"`
	CKey          types.String `tfsdk:"ckey"`
	DPAPIUser     types.String `tfsdk:"dp_api_user"`
	DPAPIPassword types.String `tfsdk:"dp_api_password"`
	FrontendHAIP  types.String `tfsdk:"frontend_haip"`
	Frontends     types.List   `tfsdk:"frontends"`
	GID           types.Int64  `tfsdk:"gid"`
	GUID          types.Int64  `tfsdk:"guid"`
	ID            types.String `tfsdk:"id"`
	ImageID       types.Int64  `tfsdk:"image_id"`
	LBID          types.Int64  `tfsdk:"lb_id"`
	ManagerId     types.Int64  `tfsdk:"manager_id"`
	ManagerType   types.String `tfsdk:"manager_type"`
	Meta          types.List   `tfsdk:"meta"`
	Milestones    types.Int64  `tfsdk:"milestones"`
	PartK8s       types.Bool   `tfsdk:"part_k8s"`
	PrimaryNode   types.Object `tfsdk:"primary_node"`
	SecondaryNode types.Object `tfsdk:"secondary_node"`
	Status        types.String `tfsdk:"status"`
	TechStatus    types.String `tfsdk:"tech_status"`
	UserManaged   types.Bool   `tfsdk:"user_managed"`
}
